📅  最后修改于: 2023-12-03 15:05:22.568000             🧑  作者: Mango
STL(Standard Template Library)中的配对图(Pair)是一种将两个值组合在一起的数据类型。每个Pair对象都包含一对值,可以使用STL中的函数和算法来处理这些值。
在STL中,Pair是一个模板类,定义为:
template <class T1, class T2>
struct pair {
typedef T1 first_type; // 第一个类型
typedef T2 second_type; // 第二个类型
T1 first; // 第一个值
T2 second; // 第二个值
// 构造函数
pair() : first(T1()), second(T2()) {}
pair(const T1& x, const T2& y) : first(x), second(y) {}
template <class U1, class U2>
pair(const pair<U1, U2>& p) : first(p.first), second(p.second) {}
};
其中,T1和T2可以是任何类型,包括内置类型(int、float、char等)和用户自定义类型。Pair类有两个公有成员变量:first和second,分别表示两个值。注意,first和second的类型分别为T1和T2。
使用Pair对象很简单。可以直接创建一个新的Pair对象,如下所示:
#include <iostream>
#include <utility>
using namespace std;
int main() {
// 创建一个pair
pair<string, int> myPair;
myPair.first = "hello";
myPair.second = 42;
// 输出pair的值
cout << "first: " << myPair.first << endl;
cout << "second: " << myPair.second << endl;
return 0;
}
输出:
first: hello
second: 42
也可以在声明时就初始化一个Pair对象,如下所示:
// 创建一个pair并初始化
pair<int, double> myPair(42, 3.14);
// 创建一个pair并使用make_pair函数初始化
auto anotherPair = make_pair("world", 12345);
Pair对象可以用来表示很多东西,比如:
在STL中,Pair对象被广泛用于实现其他的容器和算法。例如,Map和Unordered_map容器都使用Pair对象来存储键值对。
可以使用pair的first和second成员变量来访问Pair对象中的值。以下是一些示例:
// 创建一个pair
pair<string, int> myPair("hello", 42);
// 访问pair的值
cout << "first: " << myPair.first << endl;
cout << "second: " << myPair.second << endl;
// 改变pair的值
myPair.second = 123;
cout << "second: " << myPair.second << endl;
输出:
first: hello
second: 42
second: 123
Pair是一个很有用的数据类型,可以表示两个值的组合。在STL中,Pair广泛用于实现其他的容器和算法中。熟练掌握Pair的使用方法对于写出高效且易于维护的代码是很有必要的。