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)
因此,我可以根据需要安全地使用迭代器吗?它是标准的吗?
如果可以访问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::begin和std::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将返回一个迭代器到向量末尾的一个元素。因此,以这种方式迭代元素的顺序既安全又明确。
| 归档时间: |
|
| 查看次数: |
6258 次 |
| 最近记录: |