我有一组类型set<int>
,我想得到一个不是开始的地方的迭代器.
我正在做以下事情:
set<int>::iterator it = myset.begin() + 5;
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么这不起作用以及将迭代器放到我想要的地方的正确方法是什么.
R. *_*des 20
myset.begin() + 5;
仅适用于随机访问迭代器,迭代器std::set
不是.
对于输入迭代器,有以下功能std::advance
:
set<int>::iterator it = myset.begin();
std::advance(it, 5); // now it is advanced by five
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,也有std::next
类似但不改变其参数的东西:
auto it = std::next(myset.begin(), 5);
Run Code Online (Sandbox Code Playgroud)
std::next
需要一个前向迭代器.但既然std::set<int>::iterator
是一个双向迭代,都advance
和next
正常工作.
归档时间: |
|
查看次数: |
6286 次 |
最近记录: |