假设我有一个
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
这适用于任何随机访问迭代器,例如来自vector或deque:
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)