c++ vector 结构体排序 去重复
时间: 2023-07-23 14:12:10 浏览: 227
对于结构体类型的 vector,可以使用 sort 函数进行排序,使用 unique 函数进行去重。
下面是一个例子,假设有一个结构体类型为 Person:
```c++
struct Person {
string name;
int age;
bool operator==(const Person& other) const {
return name == other.name && age == other.age;
}
};
```
将 Person 结构体类型的 vector 进行排序和去重的代码如下:
```c++
vector<Person> persons = {{"Alice", 22}, {"Bob", 20}, {"Alice", 22}, {"Charlie", 21}};
// 按照年龄从小到大排序
sort(persons.begin(), persons.end(), [](const Person& a, const Person& b) {
return a.age < b.age;
});
// 去重复
auto last = unique(persons.begin(), persons.end());
persons.erase(last, persons.end());
```
上述代码中,使用了一个 lambda 表达式作为 sort 函数的第三个参数,该 lambda 表达式的功能是按照年龄从小到大进行排序。另外,unique 函数会返回去重后 vector 的最后一个元素的迭代器,可以使用 erase 函数将 vector 中多余的元素删除。
阅读全文