gpt4 book ai didi

c++ - std::initializer_list 构造函数用于什么,除了用值填充一些容器?

转载 作者:行者123 更新时间:2023-11-30 04:06:21 29 4
gpt4 key购买 nike

在标准库中找到了一个主要且明显的含义 - “使用其元素列表初始化集合”:

std::vector<int> v = {1, 2, 3};

另一个含义可以在下面的 std::bitset 链接后面找到——“单个值由 initializer_list 的元素组装而成”。

标准库中的第三个例子是 std::piecewise_constant_distribution,但我犹豫要说它有什么语义,不完全是元素的集合。

std::initializer_list 构造函数还有哪些其他用例?如果可能,使用真实代码中的示例。

其实是关于类设计的问题。
因为一些pecularities列表初始化向现有类添加 std::initializer_list 构造函数可以 easily an surprisingly be a breaking change ,因此在编写新类时,您应该始终提前知道它是否需要 std::initializer_list 构造函数。
因此,我试图通过编写 std::initializer_list 构造函数的用例来模拟预见 future 的能力。

主要问题是:我如何确定我的类将来可能有(对用户来说并不奇怪)std::initializer_list 构造函数现在编写正确的非 std::initializer_list 构造函数?

最佳答案

我实际上在我当前的项目中使用了这种技术。我有一个类“BaseMenu”,它需要在它的构造函数中初始化 std::vector,所以它有 std::vector 作为它的参数。然后,我有继承自 BaseMenu 的 MainMenu,我只是告诉 BaseMenu 我希望我的 MainMenu 看起来像什么:

BaseMenu(std::vector<std::string>);

MainMenu::MainMenu():
BaseMenu({{"Play"},
{"Options"},
{"About"},
{"Quit"}})

真是“舒服”。PS:上面的模型是简化了的,但是应该能看出std::initializer_list的用处感

关于c++ - std::initializer_list 构造函数用于什么,除了用值填充一些容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22943801/

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