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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM