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);

浙公网安备 33010602011771号