当我看到迭代矢量的典型方式时......
for (size_t i = 0; i < my_vector.size(); i++)
{
doSomething(my_vector[i]);
}
......我觉得这样可能会更快......
size_t i = 0, size = my_vector.size();
for (i; i < size; i++)
{
doSomething(my_vector[i]);
//I know, the size of the vector must not be changed here
}
...因为size()只会被调用一次而不是每个循环。
也许有人能够清楚地告诉我,谢谢!
P.S。我应该使用std :: vector :: iterator吗?
(sry for bad english)
答案 0 :(得分:1)
这可能会更快,但由于您正在使用C ++,另一种方法可能是使用迭代器:
// declare it to be some appropriate type of iterator
for (it = my_vector.begin(); it != my_vector.end(); ++it)
doSomething(*it);
但是,您在这里要小心,您不会无意中在my_vector
中构建每个项目的临时副本。
如果你正在使用C ++ 11,另一种选择是使用range-for:
for (const auto &thing : my_vector)
doSomething(thing);
请注意,使用const
和&
意味着我们避免复制my_vector
中的每个项目。
答案 1 :(得分:0)
如果您不想修改元素,可以试试这个:
for (const auto &elem : my_vector)
{
//
}