我需要严格按照元素被推回 vector 中的顺序进行迭代。对于我的特殊情况,最好使用迭代器,而不是像下面那样通过for-each循环进行迭代:

std::vector<int> vector;
for(int i = 0; i < vector.size(); i++)
   //not good, but works

我的问题是,是否真的可以像这样通过迭代器对 vector 进行迭代:
std::vector<int> v;
for(typename std::vector<int>::iterator i = v.iterator(); i != v.end(); i++)
   //good, but I'm not strictly sure about the iterating order.

因此,我可以根据需要安全地使用迭代器吗?它是标准的吗?

最佳答案

如果可以访问C++ 11,则可以使用基于范围的for循环

for (auto i : v)

否则,您应该使用begin()end()
for (std::vector<int>::iterator i = v.begin(); i != v.end(); ++i)

您还可以使用std::beginstd::end(它们也需要C++ 11)
for (std::vector<int>::iterator i = std::begin(v); i != std::end(v); ++i)
begin将返回迭代器到 vector 中的第一个元素。 end将在 vector 末尾的一个元素处将迭代器返回。因此,以这种方式迭代元素的顺序既安全又明确。

10-01 17:02
查看更多