将向量初始化为零 C + +/C + + 11

我知道在 C + + 11中,他们添加了这样一个特性: 将一个变量初始化为零

double number = {}; // number = 0
int data{};  // data = 0

是否有类似的方法来初始化一个固定长度的 std::vector到所有的零?

326419 次浏览

你不需要初始化列表:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

初始化一个具有 struct、 class 或 Union 的向量可以这样做

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);

使用最新版本的 c + + ,您可以使用 std::fill

我注意到有人在评论中提到了它。但应该是一个答案,并鼓励使用标准库算法,由专家提到,非常好的测试和证明。

    std::vector<int> vecOfInts;
vecOfInts.resize(10);


std::fill(vecOfInts.begin(), vecOfInts.end(), 0);


for (auto const& intVal : vecOfInts)
{
std::cout << intVal << " ";
}

对于 c + + : 假设向量最多有100个 int 元素,你可以这样初始化它:

Int 向量[100] = {0} ;