在 C++ 中, pair 是一个非常有用的模板类,用于存储一对值,这两个值可以是相同类型也可以是不同类型。 pair 定义在头文件 <utility> 中。使用 pair 可以帮助你将两个相关联的数据作为一个单元处理,而不需要创建一个特定的结构或类。

# 基本用法

要创建一个 pair 对象,你可以使用其构造函数,也可以使用 make_pair 函数。下面是一些基本的示例:

#include <iostream>
#include <utility> // 包含 pair 的定义
int main() {
    // 使用构造函数创建 pair
    std::pair<int, std::string> p1(1, "Apple");
    // 使用 make_pair 创建 pair
    auto p2 = std::make_pair(2, "Banana");
    // 访问 pair 中的元素
    std::cout << "p1: " << p1.first << ", " << p1.second << std::endl;
    std::cout << "p2: " << p2.first << ", " << p2.second << std::endl;
    // 修改 pair 的元素
    p1.first = 10;
    p1.second = "Orange";
    std::cout << "After modification, p1: " << p1.first << ", " << p1.second << std::endl;
    return 0;
}

# pair 的成员

  • first :访问 pair 中的第一个元素。
  • second :访问 pair 中的第二个元素。

# 常见操作

  • 比较pair 支持比较操作(如 == , != , < , <= , > , >= )。比较首先是基于 first 元素进行的,如果 first 元素相等,则基于 second 元素。
  • 赋值:可以直接给 pair 对象赋新值。

# 应用场景

pair 在 C++ 中的应用非常广泛,例如:

  • 在需要返回两个值的函数中。
  • 在容器中,如 std::mapstd::unordered_map ,这些容器底层存储的就是 key-value 对,即 pair<const KeyType, ValueType> 类型的对象。
  • 在算法中,用于表示范围(如 std::equal_range 返回的是一个 pair )。
  • 在复杂数据结构中,用于将两个相关联的数据绑定在一起。

使用 pair 可以使代码更加简洁明了,提高数据处理的效率和方便性。

更新于