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

A. *_* K. 33 c++ iterator

假设我有一个

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

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

没有做以下方法

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

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

Cor*_*son 53

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

std::vector<int>::iterator iter = v.begin() + 10;
Run Code Online (Sandbox Code Playgroud)

如果您想要一个适用于任何类型迭代器的解决方案,请使用next:

std::vector<int>::iterator iter = std::next(v.begin(), 10);
Run Code Online (Sandbox Code Playgroud)

或者,如果您没有使用C++ 11实现,advance:

std::vector<int>::iterator iter = v.begin();
std::advance(iter, 10);
Run Code Online (Sandbox Code Playgroud)


pyr*_*ope 40

只需在迭代器中添加10即可.它们旨在"感觉"像指针.