如何遍历向量?

St.*_*rio -1 c++ iterator vector

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

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

我的问题是,是否真的可以像这样通过迭代器遍历向量:

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.
Run Code Online (Sandbox Code Playgroud)

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

Cor*_*mer 5

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

for (auto i : v)
Run Code Online (Sandbox Code Playgroud)

否则,您应该使用begin()end()

for (std::vector<int>::iterator i = v.begin(); i != v.end(); ++i)
Run Code Online (Sandbox Code Playgroud)

您还可以使用std::beginstd::end(也需要C ++ 11)

for (std::vector<int>::iterator i = std::begin(v); i != std::end(v); ++i)
Run Code Online (Sandbox Code Playgroud)

begin将迭代器返回到vector中的第一个元素end将返回一个迭代器到向量末尾的一个元素。因此,以这种方式迭代元素的顺序既安全又明确。