std::pair是C++中用于组合两个值的模板类,支持构造函数、make_pair和花括号初始化,通过first和second访问元素,常用于返回多值函数和map容器。

在C++中,std::pair 是一个模板类,定义在 <utility> 头文件中,用于将两个值组合成一个单元。这两个值可以是不同类型。它常用于函数返回多个值、STL容器(如 std::map)的元素存储等场景。
如何创建 std::pair
有多种方式可以创建一个 pair 对象:
- 使用构造函数: std::pair<int, std::string> p1(10, "hello");
- 使用 make_pair 函数:编译器可自动推导类型,更方便。 auto p2 = std::make_pair(20, "world");
- 使用花括号初始化(C++11 起): std::pair<int, double> p3{5, 3.14};
如何访问 pair 中的元素
pair 有两个公开成员变量:first 和 second,分别表示第一个和第二个元素。
- 通过 .first 获取第一个值
- 通过 .second 获取第二个值
示例:
立即学习“C++免费学习笔记(深入)”;
std::pair<std::string, int> student("Alice", 21);std::cout << "Name: " << student.first << ", Age: " << student.second << std::endl;
输出结果为:
Name: Alice, Age: 21
pair 的常见用途
-
作为函数返回值:当需要返回两个相关数据时非常有用。
std::pair<bool, int> findValue(const std::vector<int>& vec, int target) {
for (size_t i = 0; i < vec.size(); ++i) {
if (vec[i] == target) return {true, static_cast<int>(i)};
}
return {false, -1};
} -
与 std::map 配合使用:map 的每个元素都是 pair,键为 first,值为 second。
std::map<std::string, int> scores;
scores["Bob"] = 85;
for (const auto& item : scores) {
std::cout << item.first << ": " << item.second << std::endl;
}









