我正在使用向量的向量来模拟二维数组。为了重用这个二维数组,有时我需要将其所有元素重置为零或某个默认值。我知道对于一个简单的一维向量我可以这样做:
std::fill(v.begin(), v.end(), 0);
Run Code Online (Sandbox Code Playgroud)
如何有效地做到这一点vector<vector<int>>?我希望找到一个不使用 for 循环但更类似于某些memset变体的解决方案。我也不想进行任何内存分配和释放,因为我的目的是重用现有分配的内存。
请注意,我假设每个向量的大小是固定的并且我知道:vector<vector<int>> v(const_max_size, vector<int> (const_max_size, 0));。如何将v的元素重置为零?
注意:我不使用for循环的意思是我不想使用 v[i][j] 等下标迭代所有 2D 元素来为其分配值。
我希望找到一个不使用for循环的解决方案......
好吧,要么显式执行循环,要么使用隐式循环的东西。显式循环没有任何问题:
for (auto& sub : v) {
std::fill(sub.begin(), sub.end(), 0);
}
Run Code Online (Sandbox Code Playgroud)
我想从技术上来说,如果你想避免循环,你可以使用:
std::for_each(v.begin(), v.end(),
[](auto& sub) {
std::fill(sub.begin(), sub.end(), 0);
});
Run Code Online (Sandbox Code Playgroud)