如何获取向量的特定位置的迭代器

时间:2011-08-04 02:07:31

标签: c++ iterator

假设我有一个

std::vector<int> v
//and ...
for(int i =0;i<100;++i) 
 v.push_back(i);

现在我想要一个迭代器,让我们说矢量的第10个元素。

没有采取以下方法

std::vector<int>::iterator vi;
vi = v.begin();
for(int i = 0;i<10;i++)
  ++vi;

因为这会破坏向量的随机访问迭代器的优势。

2 个答案:

答案 0 :(得分:51)

这适用于任何随机访问迭代器,例如来自vectordeque的迭代器:

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);

答案 1 :(得分:38)

只需向迭代器添加10即可。它们的目的是“感觉”像指针一样。