作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
假设我有一个
std::vector<int> v
//and ...
for(int i =0;i<100;++i)
v.push_back(i);
现在我想要一个迭代器,比如说 vector 的第 10 个元素。
不做下面的做法
std::vector<int>::iterator vi;
vi = v.begin();
for(int i = 0;i<10;i++)
++vi;
因为这会破坏为 vector 提供随机访问迭代器的优势。
最佳答案
这将适用于任何随机访问迭代器,例如来自 vector
或 deque
的迭代器:
std::vector<int>::iterator iter = v.begin() + 10;
如果您想要一个适用于任何类型迭代器的解决方案,请使用 next
:
std::vector<int>::iterator iter = std::next(v.begin(), 10);
或者,如果您不是 C++11 实现,advance
:
std::vector<int>::iterator iter = v.begin();
std::advance(iter, 10);
关于c++ - 如何将迭代器获取到 vector 的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935389/
我是一名优秀的程序员,十分优秀!