zoukankan      html  css  js  c++  java
  • 字典或者集合

    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);
  • 相关阅读:
    Ellipsis 的升级版 line-clamp
    Angular7里面实现 debounce search
    闭包、迭代器
    Day10 函数的进阶
    函数
    文件的操作
    Day 07基础数据补充、set、深浅拷贝
    小数据池,编码和解码
    字典
    列表、元祖的操作
  • 原文地址:https://www.cnblogs.com/Accepting/p/11222727.html
Copyright © 2011-2022 走看看