在 C++ 中模仿 C calloc 数组行为

And*_*ndy 2 c c++ constructor stdvector dynamic-memory-allocation

C 中存在一些代码,用于calloc()创建有效的向量。它看起来像这样:

uint64_t *reverseOrder = (uint64_t *)calloc((size + 1), sizeof(uint64_t));
Run Code Online (Sandbox Code Playgroud)

我想用 C++ 语法和向量来模仿这种行为,以便它实际上具有相同的效果。我可以使用以下语法吗?

std::vector<uint64_t> reverseOrder(size + 1, 0);
Run Code Online (Sandbox Code Playgroud)

我知道calloc()实际上会遍历内存并将它们设置为 0,所以我想知道是否是这种情况。

Vla*_*cow 5

你可以只写

#include <vector>
#include <cstdint>

//...

std::vector<uint64_t> reverseOrder( size + 1 );
Run Code Online (Sandbox Code Playgroud)

并且向量的所有元素都将被初始化为零。

  • 你是这里最友好的人之一,所以+1,但令我不安的是OP没有费心去阅读任何https://en.cppreference.com/w/cpp/container/vector/vector。这里我们有一条鱼,而不是钓鱼的过程。 (2认同)