如何用构造函数初始化列表中的 n 个元素初始化 std::vector<std::time_t>

How to initialize std::vector<std::time_t> with n elements in constructor initializer list

我正在尝试在构造函数初始化列表中初始化向量,如下所示:

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

矢量声明为:

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

问题是 std::time_t 也是数字类型,因此它没有像我希望的那样创建具有 42 个元素的向量,而是创建一个存储值为“42”的元素。

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

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

的元素

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

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