我需要严格按照元素被推回 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::begin
和std::end
(它们也需要C++ 11)for (std::vector<int>::iterator i = std::begin(v); i != std::end(v); ++i)
begin
将返回迭代器到 vector 中的第一个元素。 end
将在 vector 末尾的一个元素处将迭代器返回。因此,以这种方式迭代元素的顺序既安全又明确。