优化代码 for (auto& in : Iniomdl) { in.lscsys.erase( std::remove_if(in.lscsys.begin(), in.lscsys.end(), [](const auto& ic) { return ic.yes_or_not == 3; }), in.lscsys.end() ); }
时间: 2024-03-09 11:51:27 浏览: 65
可以对代码进行以下优化:
1. 使用范围 for 循环时,可以将 auto& 改为 const auto&,因为在循环内部并没有修改 in 对象。
2. std::remove_if 并不会真正删除元素,而是将符合条件的元素移动到容器末尾,并返回一个指向第一个被移动元素的迭代器。因此,还需要调用容器的 erase 函数来删除这些元素。
3. 可以使用 lambda 表达式的捕获列表来捕获函数参数,避免在 lambda 表达式内部访问函数参数。
综上所述,可以将代码优化为:
```cpp
for (const auto& in : Iniomdl) {
in.lscsys.erase(std::remove_if(in.lscsys.begin(), in.lscsys.end(),
[](const auto& ic) { return ic.yes_or_not == 3; }),
in.lscsys.end());
}
```
阅读全文