📜  STL中的配对图(1)

📅  最后修改于: 2023-12-03 15:05:22.568000             🧑  作者: Mango

STL中的配对图

简介

STL(Standard Template Library)中的配对图(Pair)是一种将两个值组合在一起的数据类型。每个Pair对象都包含一对值,可以使用STL中的函数和算法来处理这些值。

Pair的定义

在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对象很简单。可以直接创建一个新的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对象

Pair对象可以用来表示很多东西,比如:

  • 一个键值对
  • 一个坐标点的x和y值
  • 一个笛卡尔坐标系中的两个向量

在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的使用方法对于写出高效且易于维护的代码是很有必要的。