std::make_pair 是 C++ 标准库中的一个函数模板,用于创建一个 std::pair 对象。std::pair 是一种可以存储两个不同类型值的简单数据结构,类似于二元组。std::make_pair 函数可以自动推导出元素的类型,简化了构造 pair 对象的过程。
语法
std::pair<T1, T2> std::make_pair(T1 val1, T2 val2);
- T1 和 T2 是
std::pair的两个类型。 - val1 和 val2 是要存储在
pair中的两个值。
作用
std::make_pair 用来生成一个 std::pair 对象,不需要显式指定类型,编译器会自动推导出参数的类型。
示例
#include <iostream>
#include <utility> // 包含 std::make_pair 和 std::pair
int main() {
// 使用 make_pair 创建一个包含 int 和 double 的 pair
auto myPair = std::make_pair(42, 3.14);
// 输出 pair 的值
std::cout << "First: " << myPair.first << ", Second: " << myPair.second << std::endl;
return 0;
}
在这个例子中,std::make_pair(42, 3.14) 自动推导出 std::pair<int, double> 类型,并创建了一个包含两个元素的 pair,分别是 42 和 3.14。然后可以通过 myPair.first 和 myPair.second 来访问这两个值。
使用场景
std::make_pair通常用于创建键值对,尤其是在使用关联容器(如std::map或std::unordered_map)时。- 自动推导类型,简化了代码书写,避免了显式地声明
std::pair的类型。
例如在 std::map 中插入键值对:
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
// 使用 make_pair 插入键值对
myMap.insert(std::make_pair(1, "Hello"));
myMap.insert(std::make_pair(2, "World"));
// 输出 map 中的内容
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
通过 std::make_pair,代码可以更简洁地生成 std::pair,并插入到容器中。










