我正在使用 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/