在 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::map
和std::unordered_map
,这些容器底层存储的就是key-value
对,即pair<const KeyType, ValueType>
类型的对象。 - 在算法中,用于表示范围(如
std::equal_range
返回的是一个pair
)。 - 在复杂数据结构中,用于将两个相关联的数据绑定在一起。
使用 pair
可以使代码更加简洁明了,提高数据处理的效率和方便性。