152

我知道在 C++11 中,他们添加了将变量初始化为零的功能

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

是否有类似的方法将std::vector固定长度的 a 初始化为全零?

4

3 回答 3

289

您不需要初始化列表:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
于 2012-10-28T15:28:11.510 回答
4

可以通过这种方式初始化具有结构、类或联合的向量

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
于 2020-05-03T19:08:31.017 回答
0

使用最新版本的 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 << " ";
    }
于 2022-01-22T06:58:21.930 回答