我經常看到有人用指針迭代C風格的數組,而我發現它更易於使用索引。下面的例子說明了我想到的兩種方式。他們不會導致相同的拆卸...如何最好地迭代C數組?用指針或索引?
我的問題:使用「跑步者」而不是索引是否有利?順便說一句,「跑步者」技術還有另一個名字嗎?
是否依賴於基礎類型,例如:整數,字符或結構?
struct somestruct
{
float f;
int i;
};
const unsigned int uiSize = 10000;
somestruct * myarray = new somestruct[uiSize];
const somestruct * const pEnd = myarray + uiSize;
// way 1: runner
somestruct * pRunner = myarray;
while(pRunner < pEnd)
{
pRunner->f += 5;
pRunner->i += 5;
++pRunner;
}
// way 2: index
unsigned int ui = 0;
for (ui = 0; ui < uiSize; ++ui)
{
myarray[ui].f += 6;
myarray[ui].i += 4;
}
這是C++不是C.而我認爲你的意思是「數組」而不是「矢量」。 – kaylum
http://stackoverflow.com/a/11625741/187690 – AnT
難道兩個人都不一樣嗎? –