我经常看到有人用指针迭代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
难道两个人都不一样吗? –