访问set的第n个元素

时间:2011-05-01 11:19:36

标签: c++ stl set

有一组visited。我想检查从第4到最后的所有元素。 我正在尝试做那样的事情

int visited_pointer = 4;
for ( set<int>::iterator i_visited=visited.begin()+visited_pointer
    ; i_visited!=visited.end()
    ; i_visited++
)

并错误地使用了operator+

我怎样才能以正确的方式做到这一点?

2 个答案:

答案 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不支持随机访问迭代器(即支持向迭代器添加值的迭代器),所以执行此操作的唯一方法是迭代第一个(无论可能意味着什么)四个成员,直到你到达一个想。对我而言,听起来像套装不是你想要做的任何东西的正确容器。