1. 程式人生 > >C++學習之Pair

C++學習之Pair

!= pos 包含 string類 spa 操作 vector cond 運行

一、Pair類型概述

pair是一種模板類型,其中包含兩個數據值,兩個數據的類型可以不同,基本的定義如下:

pair<int, string> a;

表示a中有兩個類型,第一個元素是int型的,第二個元素是string類型的,如果創建pair的時候沒有對其進行初始化,則調用默認構造函數對其初始化。

pair<string, string> a("James", "Joy");

也可以像上面一樣在定義的時候直接對其初始化。

由於pair類型的使用比較繁瑣,因為如果要定義多個形同的pair類型的時候,可以時候typedef簡化聲明:

1 typedef pair<string
, string> author; 2 author pro("May", "Lily"); 3 author joye("James", "Joyce");

Pair對象的操作

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

1 pair<string, string> a("Lily", "Poly"); 
2 string name;
3 name = pair.second;

2、生成新的pair對象

可以使用make_pair對已存在的兩個數據構造一個新的pair類型:

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

三、編程實踐

練習:編寫程序讀入一系列string和int型數據,將每一組存儲在一個pair對象中,然後將這些pair對象存儲在vector容器

 1 #include<iostream>
 2 #include<stdlib.h>
 3 #include<string>
 4 #include<vector>
 5 #include<utility>
 6
using namespace std; 7 8 int main() 9 { 10 pair<string, int>p; 11 typedef vector< pair<string, int> > VP; 12 VP vp; 13 while(cin>>p.first>>p.second) 14 { 15 vp.push_back(make_pair(p.first,p.second)); 16 17 } 18 VP::iterator it; 19 for(it=vp.begin(); it!=vp.end(); it++) 20 cout<<it->first<<","<<it->second<<endl; 21 22 system("pause"); 23 return 0; 24 }

運行結果:

技術分享圖片

C++學習之Pair