c++ 如何循环删除vector<vector <da>> 指定结构体元素vector <da>,写出完整代码
时间: 2023-08-10 14:04:10 浏览: 95
删除循环双向链表中指定元素
5星 · 资源好评率100%
假设你有一个 `vector<vector<da>>` 类型的容器 `my_vector`,其中 `da` 是一个结构体类型。你可以使用以下代码循环删除指定结构体元素 `vector<da>`:
```c++
#include <vector>
using namespace std;
struct da {
int value;
};
int main() {
vector<vector<da>> my_vector = {{{{1}, {2}}, {{3}, {4}}}, {{{5}, {6}}, {{7}, {8}}}}; // 一个示例容器
int target_value = 3; // 假设你要删除值为 3 的元素
// 循环删除元素
for (auto &v : my_vector) {
v.erase(remove_if(v.begin(), v.end(), [&](da &d) {
return d.value == target_value;
}), v.end());
}
// 输出结果
for (auto &v : my_vector) {
for (auto &d : v) {
cout << d.value << " ";
}
cout << endl;
}
return 0;
}
```
在上面的代码中,我们使用了一个循环来遍历 `vector<vector<da>>` 中的每个元素。对于每个元素 `v`,我们使用 `remove_if` 函数和一个谓词函数来删除其中值为 `target_value` 的元素。最后,我们使用一个嵌套的循环来输出结果。
注意,在循环中,我们使用了引用 `&` 来修改每个 `vector<da>` 的元素。这是因为 `remove_if` 函数会修改容器的元素,而 `auto` 推导出的类型是 const 引用,无法修改元素。
阅读全文