如何用构造函数初始化列表中的 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
{
// ...
}
我正在尝试在构造函数初始化列表中初始化向量,如下所示:
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
{
// ...
}