gpt4 book ai didi

c++ - std::make_pair 与 C++11 统一初始值设定项

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:50 29 4
gpt4 key购买 nike

使用后者有缺点吗? std::make_pair 是更通用/更兼容还是它们真的可以互换?

谢谢!

最佳答案

它们有什么关系?使用初始化列表构造函数不适用于一对,因为 pair是异构类型的,而初始化列表构造函数使用 initializer_list<T> ,它仅可用于检索同类类型的初始化列表。

(查看规范,它真的应该称为“初始化列表构造函数”,而不是“初始化列表构造函数”。你真的是指第一个吗?如果不是,你指的是什么?)。

如果你只是指初始化一个std::pair<>使用初始化列表反对使用 std::make_pair并使用 auto ,我觉得两者都可以。

auto p = std::make_pair(a, b);
std::pair<A, B> p{a, b};

如果你已经有了类型 AB并且可以将它们用于 pair , 那么初始化列表是一个很好的使用方法。如果你还没有,那么 make_pair可能是件好事。如果你有类型 AB , 但不确定它们是否已经正确转换(即它们不应该是数组或函数类型,并且您可能还希望它们是非引用类型),那么使用 std::make_pair 可能更容易,这将适本地衰减表达式的类型。

关于c++ - std::make_pair 与 C++11 统一初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290430/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com