rub*_*nvb 5 c++ uniform-initialization c++11
使用后者有缺点吗?是std::make_pair更通用/兼容或者是他们真正的互换?
谢谢!
它们有什么关系?使用初始化列表构造函数对于一对不起作用,因为a pair是异构类型的,而初始化列表构造函数使用a initializer_list<T>,它只能用于检索均匀类型化的初始化列表.
(查看规范,它应该被称为"初始化列表构造函数",而不是"初始化列表构造函数".你真的是指第一个吗?如果没有,你指的是什么?).
如果你只是提到初始化a std::pair<>使用初始化列表反对使用std::make_pair和使用auto,我认为两者都很好.
auto p = std::make_pair(a, b);
std::pair<A, B> p{a, b};
Run Code Online (Sandbox Code Playgroud)
如果您已经有类型A并且B可以将它们用于pair,那么初始化列表是一种很好的使用方法.如果你还没有,那么make_pair可能是件好事.如果你有类型A和B,但不知道他们是否已经正确地转换(即它们不应该是数组或函数类型,你可能也希望他们非引用类型),那么它可能是更容易使用std::make_pair,这将适当地衰减表达式的类型.
| 归档时间: |
|
| 查看次数: |
8331 次 |
| 最近记录: |