我可以使用迭代器进行正常计算,即通过添加数字来增加它吗?
举个例子,如果我想删除元素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++),但我不确定它是否有效保证上班。
如果迭代器是随机访问迭代器,则它可以工作,其中向量的迭代器是(请参阅参考 http://en.cppreference.com/w/cpp/concept/RandomAccessIterator)。 STL函数std::advance http://en.cppreference.com/w/cpp/iterator/advance可用于推进通用迭代器,但由于它不返回迭代器,因此我倾向于使用 +(如果可用),因为它看起来更干净。
C++11注释
现在有std::next http://en.cppreference.com/w/cpp/iterator/next and std::prev http://en.cppreference.com/w/cpp/iterator/prev, which do返回迭代器,因此如果您在模板领域工作,您可以使用它们来推进通用迭代器并且仍然拥有干净的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)