c++ - 将 vector 的 vector (二维数组)重置为零

标签 c++ c++11 vector

我正在使用 vector 的 vector 来模拟二维数组。为了重用这个二维数组,有时我需要将它的所有元素重置为零或某个默认值。我知道我可以做一个简单的一维 vector :

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

如何为 vector<vector<int>> 高效地做到这一点?我希望找到一个不使用 for 循环但更类似于某些 memset 的解决方案变种。我也不想招致任何内存分配和释放,因为我的目的是重用现有分配的内存。

请注意,我假设每个 vector 的大小都是固定的并且为我所知:vector<vector<int>> v(const_max_size, vector<int> (const_max_size, 0)); .如何重置 v的元素归零?

注意:我的意思是不使用 for loops 是我不想使用 v[i][j] 之类的下标遍历所有 2D 元素来为它们赋值。

最佳答案

I hope to find a solution without using for loops ...

好吧,要么显式循环,要么使用隐式循环。显式循环没有错:

for (auto& sub : v) {
    std::fill(sub.begin(), sub.end(), 0);
}

我想从技术上讲,如果您想避免循环,您可以使用:

std::for_each(v.begin(), v.end(),
              [](auto& sub) {
                  std::fill(sub.begin(), sub.end(), 0);
              });

关于c++ - 将 vector 的 vector (二维数组)重置为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746386/

相关文章:

c++ Opencv accumulateWeighted - 奇怪的行为

c++ - 读取文件和未定义的行为

c++ - 外参数包可以用内参数包展开推导吗?

c++ - 将唯一指针 vector 复制到新 vector 中

c++ - 理解 vector 乘法

c++ - 初始化结构 vector

c++ - std::to_string is not returned 在 aix 中声明编译错误

python - 调试嵌入式 Python

r - 按最后一个元素匹配向量

c++ - 无法将 double [] [] 转换为 double **