使用后者有缺点吗?是std::make_pair
更通用/兼容还是它们真的可以互换?
谢谢!
它们有什么关系?使用初始化列表构造函数对 pair 不起作用,因为 apair
是异构类型的,而初始化列表构造函数使用 a initializer_list<T>
,它仅可用于检索同构类型的初始化列表。
(查看规范,它真的应该被称为“initializer-list constructor”,而不是“initializer list constructor”。你真的是指第一个吗?如果不是,你指的是什么?)。
如果您只是参考using和 usingstd::pair<>
的初始化列表来初始化 a ,我认为两者都可以。std::make_pair
auto
auto p = std::make_pair(a, b);
std::pair<A, B> p{a, b};
如果您已经有了这些类型A
并且B
可以将它们用于pair
,那么初始化列表是一个很好的使用方法。如果你没有,那make_pair
可能是一件好事。如果您有类型A
and B
,但不确定它们是否已经正确转换(即它们不应该是数组或函数类型,并且您可能还希望它们是非引用类型),那么它可能更容易使用std::make_pair
,这将适当地衰减表达式的类型。