【发布时间】:2013-07-29 12:11:32
【问题描述】:
是缺席
std::array<T,size>::array(const T& value);
疏忽?它对我来说似乎很有用,动态容器(如std::vector)确实有一个类似的构造函数。
我很清楚
std::array<T,size>::fill(const T& value);
但这不是构造函数,内存会先清零。如果我想要所有 -1 之类的 this guy 怎么办?
【问题讨论】:
-
“内存会先清零”你确定这是真的吗?
-
它不会先被清零,除非你要求它。
-
除了所有答案中的 aggregate 参数外,还可能存在更多概念性的推理。填充构造函数可能会隐藏它并没有真正构造单个元素的事实。它将首先调用聚合初始化,然后然后将值复制到元素中,它不能立即复制构造元素(相比之下,
std::vector)。因此,由于它总是等价于array(); array.fill();,所以首先省略构造函数并不能隐藏这个事实。