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 < p2true。关系运算符利用元素的<运算符来实现。

    p1 == p2p1 != p2firstsecond成员分别相等时,两个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);

posted @ 2019-08-05 16:00  patrolli  阅读(535)  评论(0编辑  收藏  举报