命名空间
变体
操作

std::make_pair

来自 cppreference.com
< cpp‎ | utility‎ | pair
 
 
工具库
语言支持
类型支持 (基本类型,RTTI)
库特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三元比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
 
定义在头文件 <utility>
template< class T1, class T2 >
std::pair<T1, T2> make_pair( T1 t, T2 u );
(直到 C++11)
template< class T1, class T2 >
std::pair<V1, V2> make_pair( T1&& t, T2&& u );
(自 C++11)
(自 C++14 起为 constexpr)

创建一个 std::pair 对象,从参数类型推断目标类型。

推断的类型 V1V2std::decay<T1>::typestd::decay<T2>::type (对按值传递的函数参数应用的通常类型转换),除非应用 std::decay 导致 std::reference_wrapper<X> 对于某些类型 X,在这种情况下,推断的类型为 X&

(自 C++11)

内容

[编辑] 参数

t, u - 用于构造对的值

[编辑] 返回值

包含给定值的 std::pair 对象。

[编辑] 示例

#include <functional>
#include <iostream>
#include <utility>
 
int main()
{
    int n = 1;
    int a[5] = {1, 2, 3, 4, 5};
 
    // build a pair from two ints
    auto p1 = std::make_pair(n, a[1]);
    std::cout << "The value of p1 is "
              << '(' << p1.first << ", " << p1.second << ")\n";
 
    // build a pair from a reference to int and an array (decayed to pointer)
    auto p2 = std::make_pair(std::ref(n), a);
    n = 7;
    std::cout << "The value of p2 is "
              << '(' << p2.first << ", " << *(p2.second + 2) << ")\n";
}

输出

The value of p1 is (1, 2)
The value of p2 is (7, 3)

[编辑] 缺陷报告

以下行为变更缺陷报告被追溯应用到先前发布的 C++ 标准。

DR 应用于 已发布的行为 正确行为
LWG 181 C++98 参数类型为 const 引用
类型,这使得传递数组成为不可能
将这些
类型更改为值类型