pair
Prerequisites:
pair模板與make pair模板
pair模板
1
2
3
4
5
6
7
8
9
10
template <class T1, class T2>
struct pair
{
T1 first; // key
T2 second; // value。
pair(); // 建構子
pair(const T1 &val1,const T2 &val2); // 有二個參數建構子
pair(const pair<T1,T2> &p); // 拷貝函式
void swap(pair<T1,T2> &p); // 交換pair
};
make pair模板
呼叫pair的二個參數建構子,傳回pair的匿名物件
1
2
3
4
5
template <class T1, class T2>
make_pair(const T1 &first,const T2 &second)
{
return pair<T1,T2>(first, second);
}
使用pair
呼叫2個參數的建構子
呼叫2個參數的建構子
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main() {
pair<int,string> p1(1,"cici");
cout << "p1 first = " << p1.first << ", second = " << p1.second << endl;
return 0;
}
p1 first = 1, second = cici
使用initializer list
{ 2, “Bill” } 為匿名物件。
1
2
pair<int,string> p2 = {2, "Bill"};
cout << "p2 first = " << p2.first << ", second = " << p2.second << endl;
p2 first = 2, second = Bill
呼叫拷貝函式
- 先建立匿名物件,呼叫2個參數建構子
- 再用拷貝函式,把匿名物件設給p3
1
2
pair<int,string> p3 = pair<int,string>(3, "Jeff");
cout << "p3 first = " << p3.first << ", second = " << p3.second << endl;
p3 first = 3, second = Jeff
makepair
以下是c++14運行的結果
- 先建立匿名物件,呼叫2個參數建構子
- 再用拷貝函式,把匿名物件拷貝到傳回值
- 再用拷貝函式,把傳回值拷貝到p4
1
2
pair<int,string> p4 = make_pair<int,string>(4, "Ann");
cout << "p4 first = " << p4.first << ", second = " << p4.second << endl;
p4 first = 4, second = Ann