【发布时间】:2016-05-08 13:45:55
【问题描述】:
我有以下结构
struct a {
int array[20]
int array2[45]
}
我已经创建了这个结构的向量
vector<a> vec;
我用过这个 vec。现在我想初始化(设置向量元素中对象内的所有数组值)为零。我该怎么办?
【问题讨论】:
-
是什么阻止了您阅读
std::vector文档?你为什么决定使用memset?得出这个结论后你做了什么尝试? -
@LightnessRacesinOrbit:std::vector 通常会为其包含的对象调用默认构造函数。因为这个结构只是内置类型,所以元素不会被零初始化。
-
@MartinBonner:是的,我知道这一点。 OP 需要进行一些研究以找出如何将他的元素归零。这个问题展示了零研究工作。我正在尝试提示 OP进行一些研究。
-
为什么你认为他没有?使用零初始化对象的副本构造向量、为结构提供默认构造函数和 memset 都是可行的方法 - memset 可能是最好的。
-
@MartinBonner
std::vector将对其元素进行值初始化,而不是默认初始化它们。所以它们将被零初始化。您可以通过阅读一些文档来了解这一点。