C++set集合遍历的时候怎么调用集合中的值????

我把几个结构体放进set集合里,结构体里有intx;inty两个值。我想在遍历set集合的时候,来对比各个结构体中x或者y值的大小,应该怎么做呢?????... 我把几个结构体放进set集合里,结构体里有 int x ; int y 两个值。

我想在遍历set集合的时候,来对比各个结构体中x或者y值的大小,应该怎么做呢?????
展开
 我来答
我狂我笑001
推荐于2017-11-26 · TA获得超过711个赞
知道小有建树答主
回答量:356
采纳率:0%
帮助的人:367万
展开全部

#include <iostream>
#include <set>
using namespace std;

typedef struct STRUC
{
int x;
int y;
}STRUCT;

int main()
{
STRUCT struc1, struc2, struc3;
struc1.x = 1;
struc1.y = 2;
struc2.x = 3;
struc2.y = 4;
struc3.x = 5;
struc3.y = 6;
long add1 = (long)&struc1;
long add2 = (long)&struc2;
long add3 = (long)&struc3;
    set<long> myset;
myset.insert(add1);
myset.insert(add2);
myset.insert(add3);

set<long>::iterator iterCur = myset.begin();
set<long>::iterator iterEnd = myset.end();
//遍历并获取x和y的值,此时你爱怎么比较大小都可以了
for (; iterCur != iterEnd; ++iterCur)
{
cout<<((STRUCT*)(*iterCur))->x<<endl;
cout<<((STRUCT*)(*iterCur))->y<<endl;
}
    system("pause");
    return 1;
}
更多追问追答
追问
{
coutxy<<endl;
}
这个没看明白,我要怎么比较大小啊????
追答
iterCur是指向set集合中当前元素的指针,*iterCur就是当前元素的值,而这个值是long型,它代表了对应结构体的地址,为了通过这个地址去调用这个结构体,首先就要把这个long型值转换成指向结构体的指针,我们用这个符号(STRUCT*)来转换*iterCur,这就是数据类型的强制转换,写出来就是:(STRUCT*)(*iterCur)。后面一个括号是set集合中的long值,前面一个括号把这个long值转换成了STRUCT类型的指针。既然获取到结构体指针了,那当然就可以通过指针操作符“->”来获取结构体中的成员变量,于是就有了((STRUCT*)(*iterCur))->x,这就是这个结构体中的x的值,取y的值同理。你在遍历的时候就可以把每一个结构体的x和y值都取出来,既然x和y的值都已经能够获取到了,那你想比较哪两个变量就直接有>或<来比较就好了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式