访问集合的第 n 个元素
有一个已访问
集合。我想检查从第四个到最后一个的所有元素。 我正在尝试做类似的事情
int visited_pointer = 4;
for ( set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
,但在使用 operator+
时遇到了错误。
我怎样才能以正确的方式做到这一点?
There is a set visited
. And I wanna check all its elements from 4-th to last.
I'm trying to do something like that
int visited_pointer = 4;
for ( set<int>::iterator i_visited=visited.begin()+visited_pointer
; i_visited!=visited.end()
; i_visited++
)
and got errors with operator+
.
How can I do that in the right way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
operator+
的用法仅适用于随机访问迭代器。set
迭代器是双向迭代器。但是函数
std::advance
可用于将任何迭代器移动一定数量的位置:That usage of
operator+
is only provided for random-access iterators.set
iterators are bi-directional iterators.But the function
std::advance
can be used to move any iterator a certain number of places:集合不支持随机访问迭代器(即支持向迭代器添加值的迭代器),因此执行此操作的唯一方法是迭代前四个成员(无论这意味着什么),直到找到所需的成员。在我看来, set 并不是您想要做的任何事情的正确容器。
sets do not support random access iterators (i.e. ones that support adding values to an iterator), so the only way to do this is to iterate through the first (whatever that may mean) four members until you get to the one you want. It sounds to me like set is not the right container for whatever it is you are trying to do.