c++ - 变长初始化器列表

标签 c++ default-value initializer-list variable-length

在 C++ 中是否可以创建可变长度的 initializer_list?

例如:

std::list<string>  mylist { somemagic (listSize, "default") };

或者:

QList<MyClass>     anotherList { somemagic (listSize, {MyClassInitializerHere} ) };

最佳答案

不,initializer_list 只能从 braced-init-list {el1, el2, ...} 创建,其长度必须是编译时常量。

如果长度是一个编译时常量,那么您可以从 std::index_sequence 的可变参数扩展构造一个花括号初始化列表;然而,使用 std::list 的填充构造函数可能更直接:

std::list<string>  mylist(listSize, "default");

您可以通过利用 fromStdList 构造函数对 QList 执行相同的操作:

QList<string>  mylist = QList<string>::fromStdList(
    std::list<string>(listSize, "default"));

关于c++ - 变长初始化器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676852/

相关文章:

php - 当为可空函数参数指定 `null` 时如何使用默认值?

javascript - 未指定数据类型时如何设置Ember模型默认值?

c++ - 具有单个参数的 std::min() 的实现是什么?

c++ - {1, 2} 是一个值吗?如果是,它的类型是什么?如果不是,为什么可以将其分配给初始化列表?

c++ - 获取给定对象的类型说明符

c++ - 文件流 tellg/tellp 和 gcc-4.6 这是一个错误吗?

c++ - 如何读取特定文件fstream?

postgresql - 如何将计算保存为 PostgreSQL 表列中的默认值

c++ - 为什么初始化列表会导致 2 个数据拷贝,而不仅仅是一个拷贝将其传递给函数?

c++ - 我可以 std::unique 一个 std::priority_queue