C++ 标准c&x2B+;使用find函数设置

C++ 标准c&x2B+;使用find函数设置,c++,arrays,data-structures,tree,set,C++,Arrays,Data Structures,Tree,Set,假设我想在集合中找到指向元素X的指针。我将执行以下操作: set<int>S; int x; cin>>x; //insert elements set<int>iterator :: it = S.find(x); 集合; int x; cin>>x; //插入元素 setiterator::it=S.find(x); 现在如何在集合中找到x后面的元素?例如,如果集合为:1、2、3,而x为2,我想打印3。这似乎不起作用: cout<<*(it

假设我想在集合中找到指向元素X的指针。我将执行以下操作:

set<int>S;
int x;
cin>>x;
//insert elements
set<int>iterator :: it = S.find(x);
集合;
int x;
cin>>x;
//插入元素
setiterator::it=S.find(x);
现在如何在集合中找到x后面的元素?例如,如果集合为:1、2、3,而x为2,我想打印3。这似乎不起作用:

cout<<*(it+1);
cout而不是这个:

cout<<*(it+1);
cout而不是这个:

cout<<*(it+1);

coutNote
set
是一个关联容器,它们通常没有允许+运算符的随机访问迭代器运算符,是的,但+表示可以添加除一以外的数字并在容器中跳转。这对于很多容器来说都是毫无意义的。例如,链表要求您先查找+1,然后才能查找+2。
set
也有类似的困难。@user4581301哦,我刚刚学习了二叉树和堆,谢谢!相关:注意
set
是一个关联容器,它们通常没有允许+运算符的随机访问迭代器运算符,是的,但+表示可以添加除一以外的数字并在容器中跳转。这对于很多容器来说都是毫无意义的。例如,链表要求您先查找+1,然后才能查找+2。
set
也有类似的困难。@user4581301哦,我刚刚学习了二叉树和堆,谢谢!相关:不要忘记范围检查。
it++
修改迭代器
cout Wait,如果集合是使用树实现的,那么++方法将如何工作?它们不会存储在contignuos中memory@asddsdsadsa
it
是一个不是指针的
std::set::iterator
。它是一个
,具有
操作符+++
和其他操作符,因此它看起来和行为都像一个指针,但在引擎盖下执行正确的操作,如遍历树。已寻址注释和修复。感谢您指出边界情况。不要忘记范围检查。
it++
修改迭代器
cout Wait,如果集合是使用树实现的,那么++方法将如何工作?它们不会存储在contignuos中memory@asddsdsadsa
it
是一个不是指针的
std::set::iterator
。它是一个
,具有
操作符+++
和其他操作符,因此它看起来和行为都像一个指针,但在引擎盖下执行正确的操作,如遍历树。已寻址注释和修复。谢谢你指出边界的情况。