目录
- pair基本用法
 - pair 其他使用
 - 重载pair的加减运算符
 - 在vector中使用
 
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
下面介绍下C++中的pair使用,内容如下所示:
pair基本用法
pair<string, int> p1("hello world", 233);
cout << p1.first << " " << p1.second;
p1 = make_pair("lala", 322);
pair 其他使用
重载pair的加减运算符
// 加法
template<class Ty1,class Ty2> 
inline const pair<Ty1,Ty2> operator+(const pair<Ty1, Ty2>&p1, const pair<Ty1, Ty2>&p2)
{
    pair<Ty1, Ty2> ret;
    ret.first = p1.first + p2.first;
    ret.second = p1.second + p2.second;
    return ret;
}
// 减法
template<class Ty1, class Ty2> 
inline const pair<Ty1, Ty2> operator-(const pair<Ty1, Ty2>&p1, const pair<Ty1, Ty2>&p2)
{
    pair<Ty1, Ty2> ret;
    ret.first = p1.first - p2.first;
    ret.second = p1.second - p2.second;
    return ret;
}
在vector中使用
// 初始化举例
vector<pair<int, int>> dirs = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
// 添加新元素几种方式
// make_pair
dirs.push_back(make_pair(2,2));
// 初始化构造函数
dirs.push_back(pair<int, int>(2,2));
// 聚合初始化
dirs.push_back({2,2});
// emplace_back
dirs.emplace_back(2,2);
补充:下面看下c++的pair用法
在实际的工作中,经常需要用到pair的内容,然后每次呢,我都会由于忘记pair怎么用的而需要去百度,我个人觉得很麻烦,于是想着自己总结一下,这样,以后看自己写的也可以更方便直接一点。
因为主要是写给自己看的,所以,我将主要以代码的形式来展示pair相关的用法:
#include <iostream>
using namespace std;
int main(){
    std::pair<std::string,int> pr;
    pr.first = "first";
    pr.second = 1;
    std::pair<std::string,int>pr2("second",2);
    std::pair<std::string,int>pr3 = std::make_pair("third",3);
    std::pair<std::string,std::pair<int,float>>pr4=std::make_pair("four",std::make_pair(1,1.0f));
    printf("%-8s:%d\n",pr.first.c_str(),pr.second);
    printf("%-8s:%d\n",pr2.first.c_str(),pr2.second);
    printf("%-8s:%d\n",pr3.first.c_str(),pr3.second);
    printf("%-8s:%d,%.3f\n",pr4.first.c_str(),pr4.second.first,pr4.second.second);
    return 0;
}
输出结果如下:
first :1
second :2
third :3
four :1,1.000
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
		
评论(0)