C++ STL pair詳解


一.解釋:

  pair是一種模板類型,其中包含兩個數據值,兩個數據的類型可以不同。如果一個函數有兩個返回值的話,如果是相同類型,就可以用數組返回,如果是不同類型,就可以自己寫個struct ,但為了方便就可以使用 c++自帶的pair ,返回一個pair,其中帶有兩個值。除了返回值的應用,在一個對象有多個屬性的時候 ,一般自己寫一個struct ,如果就是兩個屬性的話,就可以用pair 進行操作。pair 可以省的自己寫一個struct .如果有三個屬性的話,其實也是可以用的pair 的 ,極端的寫法 pair <int ,pair<int ,int > >寫法極端。(后邊的兩個 > > 要有空格,否則就會是 >>位移運算符)

二.用法:

  1.頭文件

#include<utility>

 

  2.定義方法

pair<int, string> a;
/*表示a中有兩個類型,第一個元素是int型的,第二個元素是string類型的,如果創建pair的時候沒有對其進行初始化,則調用默認構造函數對其初始化。*/
pair<string, string> a("James", "Joy");//直接初始化

  3.常用操作

    (1)對於pair類,由於它只有兩個元素,分別名為first和second,因此直接使用普通的點操作符即可訪問其成員

pair<string, string> a("Lily", "Poly"); 
string name;
name = pair.second;
/*a.first 返回Lily
a.second 返回 Poly*/

   (2)生成新的pair對象,可以使用make_pair對已存在的兩個數據構造一個新的pair類型

int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);

 

三.例子

#include <utility>
#include <iostream>
using namespace std;
typedef pair<string, string> au;  //利用typedef簡化其聲明
int main()
{
    int flag;
    string x1,x2;
    pair<string, string> p1("a","bc"); //創建一個pair對象,它的兩個元素分別為string和string類型,其中first成員初始化為“a”,而second成員初始化為“ab”
    au p2("a","aa");
    au p3;
    string name;
    name=p1.second; //返回1中名為second的數據成員
    cout<<p1.first<<endl;
    cout<<name<<endl;
    flag=p1<p2;
    cout<<flag<<endl; //判斷兩個pair對象的大小按字典次序
    flag=p1>p2;
    cout<<flag<<endl;
    while(cin>>x1>>x2)
    {
        p3=make_pair(x1,x2); //生成一個新的pair對象
        cout<<p3.first<<"****"<<p3.second<<endl;
    }
    return 0;
}

 

 

 

 


免責聲明!

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



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