【发布时间】:2020-04-21 16:19:28
【问题描述】:
std::set<int> s = { 1,2,3,4,5 };
std::set<int> s2(s.begin(), s.begin() + 2);
我想将 s 的几个值分配给s2。但得到以下编译错误:
错误 C2676 二进制“
+”: 'std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<_Ty>>>' 未定义此运算符或转换为可接受的类型 预定义的
似乎std::set::const_iterator 没有operator+ 方法。
【问题讨论】:
-
有道理,因为
std::set不支持随机访问。 -
std::set<T>::const_iterator是一个常用的双向迭代器类。您可以递增/递减它的迭代器,但不能将它们视为随机访问。 -
可以使用
std::next获取第三个迭代器。
标签: c++ iterator operator-overloading c++-standard-library stdset