有一组visited
。我想检查从第4到最后的所有元素。
我正在尝试做那样的事情
int visited_pointer = 4;
for ( set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
并错误地使用了operator+
。
我怎样才能以正确的方式做到这一点?
答案 0 :(得分:12)
仅为随机访问迭代器提供operator+
的使用。 set
迭代器是双向迭代器。
但函数std::advance
可用于将任何迭代器移动到一定数量的位置:
#include <iterator>
//...
set<int>::iterator i_visited = visited.begin();
for ( std::advance(i_visited, visited_pointer)
; i_visited!=visited.end()
; ++i_visited
)
答案 1 :(得分:2)
sets不支持随机访问迭代器(即支持向迭代器添加值的迭代器),所以执行此操作的唯一方法是迭代第一个(无论可能意味着什么)四个成员,直到你到达一个想。对我而言,听起来像套装不是你想要做的任何东西的正确容器。