zoukankan      html  css  js  c++  java
  • pair<>结构体模版的用法

      1.pair算是一个结构体模版,定义的时候是这样的:

    pair<T1,T2> P;

    其中T1,T2可以是int,string,double,甚至是vector<>。

    2.进行初始化是这样的:

    pair<int,int> a(12,34);

    也可以借用make_pair()函数:

    pair<int,int> a;
    
    a=make_pair(12,34);

    3.进行调用是很简单的:

    pair<int,int> a(12,34);
    
    printf("%d %d",a.first,a,second);

    4.如果对pair进行排序,进行的是字典序比较。

    pair<int,int> a[100];

    可以用sort(a,a+100)进行排序。

    5.下面有个小程序来展示他的用法。

    (这个程序用于解决贪心法当中的区间调度问题。)

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    
    const int MAX_N=100000;
    int N,S[MAX_N],T[MAX_N];
    pair<int,int> itv[MAX_N];
    
    void solve(){
        //对pair进行的是字典序比较
        //为了让结束时间早的工作排在前面,把T存入first,把S存入second
        for(int i=0;i<N;i++){
            itv[i].first=T[i];
            itv[i].second=S[i];
        }
        sort(itv,itv+N);
        //t是最后所选工作的结束时间。
        int ans=0,t=0;
        for(int i=0;i<N;i++){
            if(t<itv[i].second){
                ans++;
                t=itv[i].first;
            }
        }
        printf("%d
    ",ans);
    }
    
    
    /*
    本程序用于解决贪心法当中的区间调度问题
    测试数据
    5
    1 2 4 6 8
    3 5 7 9 10
    */
    int main()
    {
        scanf("%d",&N);
        for(int i=0;i<N;i++){
            scanf("%d",&S[i]);
        }
        for(int i=0;i<N;i++){
            scanf("%d",&T[i]);
        }
        solve();
        return 0;
    }
  • 相关阅读:
    删除CSDN上传图片水印
    Win10任务栏中隐藏/恢复日期显示
    使用idea和gradle编译spring5源码
    错误:找不到或无法加载主类
    判断字符串是否为数字
    mysql根据json数据过滤
    mysql当不存在时插入
    org.apache.xerces.parsers.SAXParser
    mybatis mapper判断if条件写法
    《Java面向对象编程》
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5978121.html
Copyright © 2011-2022 走看看