访问集合的第n个元素

access to nth element of set

本文关键字:元素 集合 访问      更新时间:2023-10-16

存在一组visited。我要检查从第4号到最后一个的所有元素。我正在尝试这样做

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
)

set不支持随机访问迭代器(即支持向迭代器中添加值的迭代器),因此唯一的方法是遍历第一个(无论这意味着什么)四个成员,直到找到你想要的那个。在我看来,无论你想做什么,set都不是合适的容器