访问集合的第n个元素
access to nth element of set
存在一组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都不是合适的容器
相关文章:
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- c++找不到具有相同哈希的无序集合元素
- 从C++无序集合中高效提取元素
- 如何在比较时更改集合元素的值(在 c++ 中)?
- 打印无序映射的第二个元素,即集合
- 在集合中查找使用结构C++的元素
- 如何在集合中迭代替代元素(或进行特定大小的飞跃)?
- 消除集合的第一个元素
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 将字符串集合中的元素添加到字符串集合的向量中
- 如何从一个无序集合中获取一个元素
- 如何在一对集合的向量中插入元素?vector<pair<int,set<string>>>
- C++ 如何以特定模式遍历矢量的不同集合元素
- 生成所有可能的元素选择,每个元素都来自不同的集合
- 我们如何使用下面的集合构造函数构造设置元素
- 我可以在一行代码中将向量中与条件匹配的所有元素插入到集合中吗?
- 是否可以在C STL中获得集合的单个元素
- 如何替换集合中的元素
- 使用常量键从集合中擦除元素
- 访问双元素集合中的另一个元素的简洁语法是什么?