gpt4 book ai didi

c++ - c++11 中 std::initializer_list 的好处

转载 作者:行者123 更新时间:2023-11-30 03:36:10 25 4
gpt4 key购买 nike

我想知道使用 std::initializer_list 有什么好处,它有什么作用。

我遇到了以下情况:Why is list initialization (using curly braces) better than the alternatives?

并了解“非缩小”效果,虽然我看不出它有多大好处。

我发现的另一个好处是初始化时相对容易使用(例如初始化具有多个成员的类时),但除此之外我没有看到任何重大改进,这确实使使用 initializer_list 进行初始化成为一种很好的做法,尤其是在效率方面。

最佳答案

对于大多数实际用途,std::initializer_list 提供了一个好处:能够初始化任意类型的对象。

没有缩小是好的,但与能够输入类似内容的简单便利相比,绝对相形见绌:

std::vector<int> foo { 1, 2, 3, 4};

而不是:

std::vector<int> foo;
foo.push_back(1);
foo.push_back(2);
foo.push_back(3);
foo.push_back(4);

...或产生的大量黑客攻击,主要基于滥用逗号运算符的重载以获得如下语法:

std::vector<int> foo;
foo += (1, 2, 3, 4);

是的,这可以在速度方面带来一些切实的好处(例如),因为 vector 将预先分配空间以防止在从 initializer_list 初始化期间重新分配空间。这显然是一件好事——但老实说,它很少能促成交易。如果 intializer_list 更方便但可能会慢一些,人们无论如何都会使用它(在大多数情况下这是正确的)。

关于c++ - c++11 中 std::initializer_list 的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818262/

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