C在结构定义中初始化向量

我正在阅读编程原则和实践C,并且遇到了以下一段代码,我认为这些代码没有得到很好的解释

struct Day {
    vector<double> hour{vector<double>(24,-777) };
};

这里发生了什么?当我需要一个具有默认值的特定长度的向量时,我通常会使用此初始值设定项:

vector<double> hour(24, -777);

但是,这种初始化方式在struct中不起作用,

struct Day {
    vector<double> hour(24, -777);
};

导致编译错误

Error (active)      expected a type specifier   HelloWorld  d:\Visual Studio 2015\HelloWorld\HelloWorld\HelloWorld.cpp  11  
Error (active)      expected a type specifier   HelloWorld  d:\Visual Studio 2015\HelloWorld\HelloWorld\HelloWorld.cpp  11  
Error   C2059   syntax error: 'constant'    HelloWorld  d:\visual studio 2015\helloworld\helloworld\helloworld.cpp  11  

寻找初始化者背后的解释.

我正在使用MS Visual Studio 2015

最佳答案

vector<double>(24,-777)

这将创建一个临时的std :: vector,其值为-777.

然后使用移动构造函数使用临时构造小时向量.

点赞