有一个集合visited
。我想检查从第4到最后的所有元素。 我试图做这样的事情获得集合的第n个元素
int visited_pointer = 4;
for (set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
与operator+
了错误。
我该如何以正确的方式做到这一点?
有一个集合visited
。我想检查从第4到最后的所有元素。 我试图做这样的事情获得集合的第n个元素
int visited_pointer = 4;
for (set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
与operator+
了错误。
我该如何以正确的方式做到这一点?
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
)
集不支持随机访问迭代器(即支持向迭代器添加值的那些迭代器),所以唯一的方法就是遍历第一个(不管那可能是什么意思)四个成员,直到你到达一个你要。对我来说,听起来像套装不是你正在尝试做的任何事情的正确容器。
回复:“不管这可能意味着”:一组是一个有序的容器,和第一个成员是一个根据该顺序首先出现。 – 2011-05-01 17:20:37
@Mike True。我必须承认,我习惯于把套件看作是“小包”,没有订单,而套件的订购功能仅用于保证独特性。但那只是我。 – 2011-05-01 17:32:25