调用std::vector<int>的resize方法后,新元素是否会被初始化为零?
std::vector resize后元素是否为零?
结论:在C++11及之后的标准中,你代码里的foo.resize(10)执行后,foo的所有元素都会被初始化为0。
具体原因:
- 当
resize(n)导致vector的元素数量增加时,C++11及后续标准要求对新增元素执行值初始化(value-initialization)。 - 对于
int这类内置基础类型,值初始化的行为就是将其设置为0。
C++03及更早版本的差异:
在C++03标准中,resize(n)新增的元素会执行默认初始化(default-initialization),而内置类型的默认初始化不会赋予确定值,元素会是未定义的垃圾值,此时不能保证是0。
内容的提问来源于stack exchange,提问作者P45 Imminent
相关产品推荐
相关产品推荐

