YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1在使用STL时,由于解题的需要我们常常将结构体嵌入到字典或者集合中,,如果我们这样写:

struct stu{
int a;
int b;
};
mp<stu,int >mp;

在编译的时候会报错,,因为map和set会对STL中的元素排序,如果说直接嵌入的话,, 会使map无法对key进行排序,所以要自己在结构体中定义排序方法;

struct stu{
    int a;
    int b;
    bool friend operator <(const stu &x,const stu &y){
        if(x.a!=y.a)  return x.a>y.a;
        return x.b>y.b;//使结构体根据优先根据a排序其次根据b排序
    }
};
mp<stu,int >mp;

这样写的话就可以编译通过了。

对结构体的排序有外置cmp与内置重载函数,,,外置cmp函数 :

struct stu{
    int x;
    int y;
}arr[N];
bool cmp(stu a,stu b){
    if(a.x!=b.a){
        return a.x>b.a;
    }
    return a.y>b.y;
}//先根据a的大小排序,如果说x的值相同,则根据y排序
sort(arr,arr+N,cmp)

内置重载:

struct stu{
    int x;
    int y;
    bool friend operator <(stu a,stu b){
    if(a.x!=b.a){
        return a.x>b.a;
    }
    return a.y>b.y;
}
}arr[N];
sort (arr,arr+N);//内置排序规则,,最后在用个sort 就可以了

2 pair

pari<T1,T2> p 用来保存某一组数据可以直接对p进行赋值

pair<int ,int>p,p1;
cin>>p.first>>p.second;
三种赋值方法
p1=make_pair(p.first,p.second);//make_pair可以新生成一个p,,,在赋值到p1身上
p1=p//

p1.first=p.first;
p1.second=p.second//


//初始化
pair<int ,int >p(v1,v2);

 

posted on 2019-07-21 21:06  Target--fly  阅读(131)  评论(0编辑  收藏  举报