gpt4 book ai didi

c++ - 为什么C++中的大括号初始化解决了STL容器的初始化问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:09 25 4
gpt4 key购买 nike

我正在阅读 Effective Modern C++,在关于大括号初始化的部分。

Even with several initialization syntaxes, there were some situations where C++98 had no way to express a desired initialization. For example, it wasn’t possible to directly indicate that an STL container should be created holding a particular set of values (e.g., 1, 3, and 5)

然后他显示:

std::vector<int> v{ 1, 3, 5 }; // v's initial content is 1, 3, 5

为什么做不到

std::vector<int> v(1,3,5) 

之前?接受大括号初始化的类的构造函数有何不同?

最佳答案

为了实现

std::vector<int> v(1,3,5);

,C++98 标准库实现者必须提供一个带有任意长参数列表的构造函数,并且存在用于设置给定值的元素数量的构造函数,以及更改 < em>allocator 会更复杂。必须商定最大参数限制。如果你想要一个分配器 vector ,它也可能是模棱两可的!所有这些都意味着这个想法会令人反感。

促进现代列表初始化的构造函数使用特殊的初始化列表对象。

关于c++ - 为什么C++中的大括号初始化解决了STL容器的初始化问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57855719/

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