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);
  • 相关阅读:
    Python数据分析入门
    非常干货之Python资源大全
    机器学习实战笔记之非均衡分类问题
    2^x mod n = 1 【杭电-HDOJ-1395】 附题
    android学习--视图列表(ListView和ListActivity)
    C++第13周(春)项目1
    多个线程怎样操作同一个epoll fd
    UVA
    自己定义progressdialog,改善用户体验
    总结个人项目设计保障5大原则
  • 原文地址:https://www.cnblogs.com/Accepting/p/11222727.html
Copyright © 2011-2022 走看看