c++ - 我可以通过添加一个数字来增加一个迭代器吗?

标签 c++ iterator

我可以使用迭代器进行正常计算,即通过添加一个数字来增加它吗?

例如,如果我想删除元素 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::nextstd::prev ,它确实返回迭代器,所以如果你在模板领域工作,你可以使用它们来推进一个通用迭代器并且仍然有干净的代码。

关于c++ - 我可以通过添加一个数字来增加一个迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033089/

相关文章:

C++缓存 vector 空()

c++ - ReadFile Timeout 字节间延迟时间

string - 在 Rust 中,将 &str 拆分为每个包含一个字符的 &strs 迭代器的惯用方法是什么?

c++ - 我能否获取模板类型的 "iterator",无论该类型是数组还是类似 STL 的容器?

c++ - 直接传递编译选项(绕过CMakeLists.txt)

c++ - FFmpeg 原生 AAC 解码器

c++ - 仅覆盖自定义数据结构的迭代器的 operator*()

vb.net - VB.NET vNext 中的迭代器,以及 C# 中迭代​​器的局限性

c++ - 迭代 std::map,做错事,提示迭代器缺少 '=' 运算符

c++ - 引用是否被视为 C++ 中的指针