【问题标题】:How to initialize std::vector<std::time_t> with n elements in constructor initializer list如何使用构造函数初始化列表中的 n 个元素初始化 std::vector<std::time_t>
【发布时间】:2020-09-03 06:23:23
【问题描述】:

我正在尝试像这样在构造函数初始化器列表中初始化向量:

Foo::Foo()
    : vec{42}
{
    //  ...
}

向量声明为:

std::vector<std::time_t> vec;

问题是std::time_t 也是数字类型,所以不是像我想要的那样创建具有 42 个元素的向量,而是创建一个具有存储值“42”的元素。

问题:有没有办法在构造函数初始化器列表中用大小初始化此类向量?

【问题讨论】:

  • : vec(42, time_t{})

标签: c++ vector initialization time-t


【解决方案1】:

使用braced-init-list初始化时,优先使用std::vectorstd::initializer_list的构造函数;对于vec{42},它会将vec 初始化为包含1 个值为42 的元素。

您可以应用括号初始化程序而不是花括号初始化列表(这是 C++11 的一项功能)。

Foo::Foo()
    : vec(42) // initialize vec as containing 42 default-initialized elements
{
    //  ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-09
    • 2016-05-03
    • 2015-12-29
    • 2020-05-05
    • 1970-01-01
    • 2014-09-07
    • 2015-09-04
    相关资源
    最近更新 更多