【发布时间】:2016-04-29 05:43:49
【问题描述】:
我经常看到人们使用指针迭代 C 样式数组,而我发现使用索引更易读。下面的例子说明了我考虑的两种方式。它们不会导致相同的拆卸...
我的问题:使用“跑步者”而不是索引是否有利?顺便问一下,“跑步者”技术还有别的名字吗?
它是否取决于底层类型,例如int、char 还是结构体?
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。我认为您的意思是“数组”而不是“向量”。
-
不是都一样吗?
-
好的,它是 C++。问题保持不变。
-
@SouravGhosh 否 - 数组和向量不是一回事。 C++ 两者都有,而且它们的行为不同
标签: c performance pointers