目录
1, 什么是pair
数据以键值对形式存放的容器, 第一个是键, 第二个是值
2, 创建pair
pair<数据类型, 数据类型> 对象名, 可创建一个pair, 数据类型可以是标准数据类型, 也可以是自定义类型
2-1, 标准数据类型
//键数据类型为string, 值数据类型为int
//pair<string, int> px为创建pair对象, 后面的部分是对其进行赋值
//pair<string, int>("aaa", 1)为一个匿名pair对组
pair<string, int> p1(pair<string, int>("aaa", 1));
//拷贝构造创建
pair<string, int> p2(p1);
//括号法创建
pair<string, int> p3("bbb", 2);
//显示法创建
pair<string, int> p4 = pair<string, int>("ccc", 3);
//make_pair方式创建
pair<string, int> p5 = make_pair("ddd", 4);
//map<string, int>::value_type方式创建
pair<string, int> p6(map<string, int>::value_type("eee", 5));
2-2, 自定义数据类型
Myclass1 mc_1("张三", 10);
Myclass2 mc_2("李四", 20);
//键数据类型为MyClass, 值数据类型为MyClass2
pair<Myclass1, Myclass2> p1(mc_1, mc_2);
pair<Myclass1, Myclass2> p2 = make_pair(mc_1, mc_2);
pair<Myclass1, Myclass2> p3(map<Myclass1, Myclass2>::value_type(mc_1, mc_2));
3, 查询元素
通过对象名.first, 访问pair的第一个元素, 对象名.second, 访问pair的第二个元素
3-1, 标准数据类型
#include <iostream>
#include <string>
#include <map>
using namespace std;
void print_pair(pair<string, int>& p)
{
cout << "键:" << p.first << endl;
cout << "值:" << p.second << endl;
}
int main()
{
pair<string, int> p1 = make_pair("bbb", 2);
print_pair(p1);
system("pause");
return 0;
}
3-2, 自定义数据类型
#include <iostream>
#include <string>
#include <map>
using namespace std;
class Myclass1
{
public:
Myclass1(string name, int age) : m_name(name), m_age(age) {};
string m_name;
int m_age;
};
class Myclass2
{
public:
Myclass2(string name, int age) : m_name(name), m_age(age) {};
string m_name;
int m_age;
};
void print_pair(pair<Myclass1, Myclass2>& p)
{
cout << "键:" << p.first.m_name << " " << p.first.m_age << endl;
cout << "值:" << p.second.m_name << " " << p.second.m_age << endl;
}
int main()
{
Myclass1 mc_1("张三", 10);
Myclass2 mc_2("李四", 20);
pair<Myclass1, Myclass2> p1 = make_pair(mc_1, mc_2);
print_pair(p1);
system("pause");
return 0;
}
4, 交换(swap)
通过对象1.swap(对象2), 交换两个pair的值
#include <iostream>
#include <string>
#include <map>
using namespace std;
void print_pair(pair<string, int>& p)
{
cout << "键:" << p.first << endl;
cout << "值:" << p.second << endl;
}
void test()
{
pair<string, int> p1 = make_pair("aaa", 1);
pair<string, int> p2 = make_pair("bbb", 2);
//交换
p1.swap(p2);
print_pair(p1);
print_pair(p2);
}
int main()
{
test();
system("pause");
return 0;
}