我在 Stack Overflow 上发现,这个语句可以用来判断向量的所有元素是否为零,但这仅适用于一维向量。
bool zeros = std::all_of(v.begin(), v.end(), [](int i) { return i==0; });
Run Code Online (Sandbox Code Playgroud)
我如何修改它以便它可以用于二维矢量?
是否可以只用一条语句来实现?
像这样(假设你的意思是一个嵌套向量):
#include <algorithm>
#include <vector>
int main() {
std::vector<std::vector<int>> vs;
std::all_of(vs.begin(), vs.end(), [](const std::vector<int>& v) {
return std::all_of(v.begin(), v.end(), [](int x) { return x == 0; });
});
}
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
bool check0(const std::vector<std::vector<int>> &vs) {
for(const auto& v : vs) {
for(auto x : v) {
if(x != 0) {
return false;
}
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
您可以在这里比较两个版本的反汇编:https ://godbolt.org/z/YzdW7x 。
归档时间: |
|
查看次数: |
968 次 |
最近记录: |