[英]How to initialize std::vector<std::time_t> with n elements in constructor initializer list
I am trying to initialize vector in constructor initializer list like so:我正在尝试在构造函数初始化列表中初始化向量,如下所示:
Foo::Foo()
: vec{42}
{
// ...
}
The vector is declared as:向量被声明为:
std::vector<std::time_t> vec;
Problem is that std::time_t
is numeric type also, so instead of creating vector with 42 elements as I would like, it creates one element with stored value '42'.问题是
std::time_t
也是数字类型,所以不是像我想要的那样创建具有 42 个元素的向量,而是创建一个具有存储值“42”的元素。
Question: is there a way to initialize such vector with size in constructor initializer list?问题:有没有办法在构造函数初始化列表中用大小初始化这样的向量?
When initialized with braced-init-list, the constructor of std::vector
taking std::initializer_list
is preferred;当用braced-init-list初始化时,
std::vector
的构造函数采用std::initializer_list
是首选; for vec{42}
it would initialize vec
as containing 1 element with value 42
.对于
vec{42}
,它会将vec
初始化为包含 1 个值为42
的元素。
You can apply parentheses initializer instead of braced-init-list (which is a C++11 feature).您可以应用括号初始化程序而不是花括号初始化列表(这是 C++11 功能)。
Foo::Foo()
: vec(42) // initialize vec as containing 42 default-initialized elements
{
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.