我可以使用迭代器进行正常的计算吗,即只是通过添加一个数来增加它?我可以通过添加数字来增加迭代器吗?
举个例子,如果我要删除的元素vec[3]
,我能做到这一点:
std::vector<int> vec;
for(int i = 0; i < 5; ++i){
vec.push_back(i);
}
vec.erase(vec.begin() + 3); // removes vec[3] element
这对我的作品(G ++),但我不知道这是否是保证上班。
我可以使用迭代器进行正常的计算吗,即只是通过添加一个数来增加它?我可以通过添加数字来增加迭代器吗?
举个例子,如果我要删除的元素vec[3]
,我能做到这一点:
std::vector<int> vec;
for(int i = 0; i < 5; ++i){
vec.push_back(i);
}
vec.erase(vec.begin() + 3); // removes vec[3] element
这对我的作品(G ++),但我不知道这是否是保证上班。
它适用于迭代器是随机访问迭代器,哪些向量的迭代器是(请参阅reference)。 STL函数std::advance
可用于推进泛型迭代器,但由于它不返回迭代器,所以我倾向于使用+(如果可用),因为它看起来更干净。
C++ 11注
现在有std::next
和std::prev
,这做返回迭代器,所以如果你是在模板土地工作,你可以用它们来推动通用的迭代,仍然有干净的代码。
它适用于随机访问迭代器。一般来说,你可能想看看更通用的std::advance。请务必理解使用此函数模板的性能影响。
哦,所以它不适用于std :: list? – Frank 2009-06-23 14:58:24