c++ 如何循环删除vector<vector <>> 指定结构体元素vector <>
时间: 2023-08-10 19:04:10 浏览: 67
如果你要循环删除 `vector<vector<>>` 中的指定结构体元素 `vector<>`,你可以使用 `remove_if` 函数和 `erase` 函数来实现。
`remove_if` 函数是一个常见的算法函数,它接受一个范围和一个谓词函数,并将满足谓词函数的元素移到容器的末尾,并返回指向新的末尾的迭代器。注意,`remove_if` 并不会真正删除元素,它只是将不需要的元素移到了容器的末尾。
接下来,你可以使用 `erase` 函数来删除这些不需要的元素。如果这些元素是 `vector<>`,那么你需要传递两个迭代器,分别表示每个 `vector<>` 的开始和结束位置。因此,你可以使用以下代码来删除这些元素:
```c++
my_vector.erase(remove_if(my_vector.begin(), my_vector.end(), [&](vector<> &v) {
// 返回 true 表示需要删除这个元素
return some_condition(v);
}), my_vector.end());
```
在上面的代码中,`some_condition` 是一个可以确定哪些元素需要删除的谓词函数。在这个函数中,你可以检查 `vector<>` 中的元素是否符合要求,如果符合要求就返回 `true`,否则返回 `false`。
`remove_if` 函数会将满足 `some_condition` 的 `vector<>` 移动到容器的末尾,并返回一个指向新的末尾的迭代器。接着,`erase` 函数会删除这些元素,从而实现了循环删除 `vector<vector<>>` 中的指定结构体元素 `vector<>`。