假设我有一个
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;
因为这会破坏向量的随机访问迭代器的优势。
答案 0 :(得分:51)
这适用于任何随机访问迭代器,例如来自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);
答案 1 :(得分:38)
只需向迭代器添加10即可。它们的目的是“感觉”像指针一样。