c++ 如何删除vector 指定结构体元素
时间: 2023-08-13 12:03:10 浏览: 461
要删除 `vector` 中的指定结构体元素,可以按照以下步骤进行操作:
1. 定义一个结构体,例如:
```c++
struct Person {
string name;
int age;
};
```
2. 创建一个 `vector`,并在其中添加一些 `Person` 结构体元素:
```c++
vector<Person> persons;
persons.push_back({"Tom", 20});
persons.push_back({"Jack", 25});
persons.push_back({"Mary", 22});
```
3. 遍历 `vector`,查找要删除的结构体元素:
```c++
auto it = find_if(persons.begin(), persons.end(), [](const Person& p) {
return p.name == "Jack"; // 以 name 字段为条件查找
});
```
`find_if` 函数接受一个谓词函数作为参数,用于判断当前元素是否是要删除的元素。在上述例子中,我们使用 lambda 表达式作为谓词函数,以 `name` 字段为条件查找。
4. 如果找到要删除的结构体元素,则使用 `erase` 函数删除它:
```c++
if (it != persons.end()) {
persons.erase(it);
}
```
完整代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Person {
string name;
int age;
};
int main() {
vector<Person> persons;
persons.push_back({"Tom", 20});
persons.push_back({"Jack", 25});
persons.push_back({"Mary", 22});
auto it = find_if(persons.begin(), persons.end(), [](const Person& p) {
return p.name == "Jack"; // 以 name 字段为条件查找
});
if (it != persons.end()) {
persons.erase(it); // 删除元素
}
for (const auto& p : persons) {
cout << p.name << " " << p.age << endl; // 输出剩余的元素
}
return 0;
}
```
输出结果为:
```
Tom 20
Mary 22
```
即删除了 `name` 为 `"Jack"` 的结构体元素。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)