C++/STL8. pair

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++/STL8. pair相关的知识,希望对你有一定的参考价值。


  • pair是STL中有用的一个“小玩意”,它将两个任意数据类型的变量绑定在一起。可以把pair看作一个内部有两个元素的结构体也可以把它看做map映射中的一项
  • pair支持任意基本数据类型和STL容器
  • pair定义于​​utility.h​​​,命名空间​​std​
  • ​map.h​​​中包含了​​utility.h​​​,所以如果包只含​​map.h​​也可以用pair

一、构造函数

作用

代码

说明

定义一个pair

pair<typename1,typename2> p;

typename可以是任意基本数据类型或STL容器

初始化一个pair

make_pair(value1,value2);

可用于函数实参,或者用来初始化已定义的pair

定义一个pair,同时初始化

pair<typename1,typename2> p(value1,value2);

-

定义并初始化临时pair

pair<typename1,typename2> (value1,value2);

常用于函数实参

二、访问pair

  • 访问pair中前一个元素​​pair.first​
  • 访问pair中前一个元素​​pair.second​
#include <iostream>
#include <utility>
#include <vector>
using namespace std;

void printPair(const pair<string,int> &p)

cout<<p.first<<" "<<p.second<<endl;


int main()

vector<int> v;
v.push_back(1);
v.push_back(2);

//pair<typename1,typename2> p; 方法
pair<int,vector<int> > p;

//make_pair()方法
p = make_pair(1,v);
cout<<p.first<<" "<<p.second[0]<<endl; //---------------打印1 1

//pair<typename1,typename2> p(value1,value2); 方法
pair<string,int> p1("A",1);
printPair(p1); //---------------打印A 1

//pair<typename1,typename2> (value1,value2); 方法,构造临时pair
printPair(pair<string,int> ("B",2)); //---------------打印B 2

//make_pair方法构造临时pair
printPair(make_pair("C",3)); //---------------打印C 3

return 0;

三、比较pair

  • 两个pair之间可以用​​== / != / < / <= / > / >=​​比较大小
  • 比较规则:先比较first,如果相等再比较second
#include <iostream>
#include <utility>
#include <vector>
using namespace std;

int main()

pair<int,int> p1(5,10);
pair<int,int> p2(5,15);
pair<int,int> p3(10,5);

if(p1<p3)
cout<<"p1<p3"<<endl; //打印
if(p1<=p3)
cout<<"p1<=p3"<<endl; //打印
if(p1<p2)
cout<<"p1<p2"<<endl; //打印

return 0;

四、常见用途

  1. 用来代替二元结构体,节省编码时间
  2. 作为map的键值来进行插入,如下:
#include <iostream>
#include <map>
//#include <utility> //有map就不用这个了
#include <string>
using namespace std;

int main()

map<string,int> mp;

mp.insert(make_pair("A",1));
mp.insert(pair<string,int>("B",2));

for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second<<endl;

return 0;

/*
A 1
B 2
*/


以上是关于C++/STL8. pair的主要内容,如果未能解决你的问题,请参考以下文章

湘潭1247 Pair-Pair(树状数组)

c_cpp Pairs_Syntax

c_cpp coprimes_pairs

C - Sequence Pair Weight(组合数学)

C++ 中的 std::pair 和 std::tuple

C++ 中的 std::pair 和 std::tuple