C++ pair的使用
定义:
pair
定义在头文件utility
中,它可以保存两个数据成员,这两个数据成员类型可以不相同。
初始化
- 默认构造:
std::pair<std::string, double> product1;
- 值初始化:
std::pair<std::string, double> product2("tomatoes", 2.30);
- 复制初始化:
std::pair<std::string, double> product3(product);
- 使用
make_pair
:product1 = std::make_pair(std::string("light"), 0.99);
- 列表初始化:
pair<T1, T2>p = {v1, v2};
访问
p.first
:访问名为first
的(公有)数据成员(即T1
)
p.second
:访问名为second
的(公有)数据成员(即T2
)
get()
:
```cpp
std::pair<int, char> foo(10, 'x');
std::get<0>(foo) = 50; //get<I>, I为0时返回first的引用,为1时返回second的引用
std::out << "foo contains: ";
std::out << "std::get<0>(foo) << " and " << std::get<1>(foo) << "\n";
```
其他操作
-
比较:
p1 relop p2
: 关系运算符(<, >, <=, >=
)按字典序定义: 如:当p1.first < p2.first
或!(p2.first < p1.first) && (p1.second < p2.second)
成立时,p1 < p2
为true
。关系运算符利用元素的<
运算符来实现。p1 == p2
,p1 != p2
:first
和second
成员分别相等时,两个pair
相等。相等性用元素的==
运算符实现 -
交换:
成员函数版:
cpp std::pair<int, char> foo(10, 'a'); std::pair<int, char> bar(90, 'z'); foo.swap(bar);
非成员函数版:
cpp std::pair<int, char> foo(10, 'a'); std::pair<int, char> bar(90, 'z'); swap(foo, bar);