我可以使用迭代器进行正常计算,即通过添加一个数字来增加它吗?
例如,如果我想删除元素 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++),但我不确定它是否保证有效。
最佳答案
如果迭代器是随机访问迭代器,它可以工作, vector 的迭代器是(见 reference)。 STL函数std::advance
可用于推进通用迭代器,但由于它不返回迭代器,我倾向于使用 + (如果可用),因为它看起来更简洁。
C++11 笔记
现在有 std::next
和 std::prev
,它确实返回迭代器,所以如果你在模板领域工作,你可以使用它们来推进一个通用迭代器并且仍然有干净的代码。
关于c++ - 我可以通过添加一个数字来增加一个迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033089/