Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量(具有向量的结构)_C++_C++11_Vector_Struct_Initialization - Fatal编程技术网

C++ 向量(具有向量的结构)

C++ 向量(具有向量的结构),c++,c++11,vector,struct,initialization,C++,C++11,Vector,Struct,Initialization,下面是比亚恩·斯特劳斯特鲁普的C++中所述的一段代码:编程和原理 struct Day { vector <double> hour { vector <double> (24,-7777)} }; struct Month { vector <Day> day {32}; }; struct-Day{ 向量小时{向量(24,-7777)} }; 结构月{ 病媒日{32}; }; 这段代码初始化32天,每天作为24小时的向量,用-7777初

下面是比亚恩·斯特劳斯特鲁普的C++中所述的一段代码:编程和原理

struct Day {
    vector <double> hour { vector <double> (24,-7777)}
};
struct Month {
    vector <Day> day {32};
};
struct-Day{
向量小时{向量(24,-7777)}
};
结构月{
病媒日{32};
};
这段代码初始化32天,每天作为24小时的
向量
,用
-7777
初始化


问题是为什么列表初始值设定项
{32}
会创建32天它不是应该用32作为初始值来初始化day
向量,而不是创建32个成员吗?

单参数初始值设定项列表与使用一个参数的向量匹配,该向量分配了那么多元素。在这种情况下,32.

对于

否则,将分两个阶段考虑
T
的构造函数:

std::initializer\u list
作为唯一参数的所有构造函数, 或者,如果其余参数具有默认值,则作为第一个参数 值进行检查,并通过针对 类型为
std::initializer\u list

如果前一阶段没有生成匹配项,
T的所有构造函数
参与针对以下参数集的重载解析:
由带大括号的init列表的元素组成,带有限制
只允许非窄化转换。如果这个阶段
生成显式构造函数作为
复制列表初始化,编译失败(注意,简单
复制初始化,根本不考虑显式构造函数)

day
的类型为
vector
,其as参数需要一个
std::initializer\u列表
,该列表不能从带括号的initializer
{32}
构造。然后使用并构造带有32个默认插入的
实例的
向量

另一方面,如果可以从
int
初始化
Day
,例如,有一个构造函数取
int
,那么
std::initializer\u list
可以从
{32}
构造,因为从
int
Day
的隐式转换,然后
向量日{32}
将使用一个从
32
初始化的元素构造
向量


如何将
32
作为(单数)
Day
对象的合适初始值?
vector Day{32}
类似于
vector Day(32)
。如果你看一下向量定义,它说参数是vector@BAdhi确定吗?只有包含在(n)中的参数才能创建n项的向量。。。而{n}初始化一个可能的向量