c++ - 无法移动集合迭代器

标签 c++ set

我做错了什么:

set<int>::iterator beg = begin( my_set );
++beg;//<<here, no problem, as expected
beg += 3;  //error here no += operator found?!  

有什么想法吗?

最佳答案

推进迭代器的正确方法是使用 std::advancestd::next

beg = std::next(beg, 3);
std::advance(beg, 3);

由于指针运算,使用 += 递增迭代器的方法将仅适用于数组(或带有 random access iterators 的容器)。

关于c++ - 无法移动集合迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425936/

相关文章:

mongodb - 如何使用计算值在 MongoDB 中批量更新服务器上的文档?

c++ - 从特定索引遍历集合到特定索引

ruby - 集合 vs 数组,区别

java - 使用 HashMap 获取重复出现的情况

c++ - 代码只打印一个倍数而不是 3 个

c++ - 多重继承设计实现

C++为什么const X&可以被函数修饰?

c++ - 在编译时比较静态字段指针

c++ - 必须在 PIMPL 中提供析构函数

c++ - boost::variant 的树状容器——有什么缺点吗?