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<Type1,Type2>(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