如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>

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

本文关键字:std 初始化 元素 vector lt gt time 构造函数 列表      更新时间:2023-10-16

我正在尝试初始化构造函数初始值设定项列表中的矢量,如下所示:

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

向量声明为:

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

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

问题:有没有办法在构造函数初始值设定项列表中初始化这种向量的大小?

当使用大括号初始化列表初始化时,首选std::vector的构造函数std::initializer_list;对于vec{42},它将vec初始化为包含 1 个值为42的元素。

您可以应用括号初始值设定项而不是大括号初始化列表(这是 C++11 功能(。

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