STL pair 常見用法詳解

<font color=#FF0000 size=3 face="黑體">《算法筆記》學習筆記</font>ios

pair 常見用法詳解

//pair是一個很實用的」小玩意「,當想要將兩個元素綁在一塊兒做爲一個合成元素,
//又不想所以定義結構體時,使用pair能夠很方便地做爲一個替代品。
//也就是說,pair實際上能夠看做一個內部有兩個元素地結構體,
//且這兩個元素的類型是能夠指定的。
struct pair {
    typename1 first;
    typename2 second;
};

1. pair的定義

//要使用pair,應先添加頭文件#include <utility>,並在頭文件下面加上"using namespace std"
//注意:因爲map的內部實現中涉及pair,所以添加map頭文件時會自動添加utility頭文件
//此時若是須要使用pair,就不須要額外再添加utility頭文件

//pair有兩個參數,分別對應first和second的數據類型,它們能夠是任意基本數據類型或容器
//定義
pair<typeName1, typeName2> name;
//定義參數爲string和int類型的pair
pair<string, int> p;
//初始化
pair<string, int> p("haha", 5);

//臨時構建一個pair,有兩種方法
//<1> 將類型定義寫在前面,後面用小括號內兩個元素的方式
pair<string, int> ("haha", 5)

//<2> 使用自帶的make_pair函數
make_pair("haha", 5)

2. pair中元素的訪問

//pair中有兩個元素,分別是first和second,只須要按正常結構體的方式去訪問便可。
#include <iostream>
#include <utility>
#include <string>
using namespace std;
int main() {
    pair<string, int> p;
    p.first = "haha";
    p.second = 5;
    cout << p.first << " " << p.second << endl;
    p = make_pair("xixi", 55);
    cout << p.first << " " << p.second << endl;
    p = pair<string, int>("heihei", 555);
    cout << p.first << " " << p.second << endl;
    return 0;
}

3. pair 經常使用函數實例解析

比較操做數算法

//兩個pair類型數據能夠直接使用 ==, !=, <, <=, >, >= 比較大小,比較規則先以first的大小做爲標準
//只有當first相等時纔去判別second的大小
#include <cstdio>
#incldue <utility>
using namespace std;
int main() {
    pair<int, int> p1(5, 10);
    pair<int, int> p2(5, 15);
    pair<int, int> p3(10, 5);
    if(p1 < p3) printf("p1 < p3\n");
    if(p1 <= p3) printf("p1 <= p3\n");
    if(p1 < p2) printf("p1 < p2\n");
    return 0;
}

4. pair的常見用途

  • 用來提代二元結構體及其構造函數,能夠節省編碼時間
  • 做爲map的鍵值對來進行插入
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
    map<string, int> mp;
    mp.insert(make_pair("heihei", 5));
    mp.insert(pair<string, int>("haha", 10));
    for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }
    return 0;
}
相關文章
相關標籤/搜索