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\n",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;
}

 

posted @ 2016-10-19 17:30  多一份不为什么的坚持  阅读(3080)  评论(0编辑  收藏  举报