make_pair

一种可用来构造 pair 类型对象的模板函数,其中,组件类型将根据作为参数传递的数据类型自动进行选择。

template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1& Val1, Type2& Val2); template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1& Val1, Type2&& Val2);  template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1&& Val1, Type2& Val2);  template<class Type1, class Type2>    pair<Type1, Type2> make_pair(Type1&& Val1, Type2&& Val2);

参数

  • Val1
    用于初始化第一个 pair 元素的值。

  • Val2
    用于初始化第二个 pair 元素的值。

返回值

所构造的配对对象:pair<Type1Type2>(Val1,Val2)。

备注

make_pair 可以将 reference_wrapper 类 类型的对象转换为引用类型,将衰减数组和函数转换为指针。

在返回的 pair 对象中,Type1 通过以下方式确定:

  • 如果输入类型 Type1 为 reference_wrapper<X>,则返回的类型 Type1 为 X&。

  • 否则,返回的类型 Type1 为 decay<Type1>::type。 如果不支持 decay 类,则返回的类型 Type1 与输入类型 Type1 相同。

返回的类型 Type2 以类似的方式通过输入类型 Type2 来确定。

make_pair 的优势之一在于要存储的对象类型由编译器自动确定,而不必显式指定。 使用 make_pair 时请不要使用显式模板参数(如 make_pair<int, int>(1, 2)),因为它冗长而多余并会增加复杂的右值引用问题,可能会导致编译失败。 就此示例来说,正确的语法应该是 make_pair(1, 2)

利用 make_pair 帮助程序函数,还可以实现向需要一个配对作为输入参数的函数传递两个值。

示例

有关如何使用帮助程序函数 make_pair 来声明和初始化配对的示例,请参阅pair 结构

要求

标头:<utility>

命名空间: std

请参见

参考

<utility>

Lvalues 和 Rvalues