让我先描述一下更高层次的目标,我有一个布尔值矩阵(我用std::vector<std::vector<bool>>
表示)。
我想删除整行都是true
值的所有行。
目前,我做:
bool is_row_true(const vector<bool>& row) {
return all_of(row.begin(), row.end(), [](bool val) {
return val;
});
}
for (int i = 0; i < mat.size(); ++i) {
if (is_row_true(mat[i])) {
std::erase(mat.begin() + i);
}
}
字符串
然而,这似乎效率很低。相反,我考虑获取行都为true的索引列表,并传入索引列表并同时删除所有这些行。有没有一种方法可以在容器库中的功能中做到这一点?
1条答案
按热度按时间jk9hmnmh1#
这样做的工作:
字符串
它比remove-erase习惯用法简单,但只适用于c++20或更高版本。