STL pair

STL pair教程

C++ STL 标准库提供了 pair 类模板,其专门用来将 2 个普通元素 first 和 second(可以是 C++ 基本数据类型、结构体、类自定的类型)创建成一个新元素 <first, second>

通过其构成的元素格式不难看出,使用 pair 类模板来创建 “键值对” 形式的元素,再合适不过。

STL pair详解

array 容器以类模板的形式定义在 <utility> 头文件,并位于命名空间 std 中,在 C++ 11 标准之前,pair 类模板中提供了以下 3 种构造函数:

// 默认构造函数,即创建空的 pair 对象 pair(); // 直接使用 2 个元素初始化成 pair 对象 pair (const first_type& a, const second_type& b); // 拷贝(复制)构造函数,即借助另一个 pair 对象,创建新的 pair 对象 template<class U, class V> pair (const pair<U,V>& pr);

在 C++ 11 标准中,在引入右值引用的基础上,pair 类模板中又增添了如下 2 个构造函数:

// 移动构造函数 template<class U, class V> pair (pair<U,V>&& pr); // 使用右值引用参数,创建 pair 对象 template<class U, class V> pair (U&& a, V&& b);

除此之外,C++ 11 标准中 pair 类模板还新增加了如下一种构造函数:pair (piecewise_construct_t pwc, tuple<Args1...> first_args, tuple<Args2...> second_args);,该构造 pair 类模板的方式很少用到。

案例

创建pair

创建并初始化 pair

#include <iostream> #include <utility> #include <string> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; pair <string, string> pair1("haicoder","www.haicoder.net"); pair <string, string> pair2(make_pair("shell教程", "https://haicoder.net/shell/shell-tutorial.html")); cout << "pair1: " << pair1.first << " " << pair1.second << endl; cout << "pair2: "<< pair2.first << " " << pair2.second << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

02_STL pair.png

我们看到,我们使用了两种方式创建了 pair,并访问了其元素。

STL pair教程总结

C++ STL 标准库提供了 pair 类模板,其专门用来将 2 个普通元素 first 和 second(可以是 C++ 基本数据类型、结构体、类自定的类型)创建成一个新元素 <first, second>