list<people>去重
时间: 2024-05-18 11:09:11 浏览: 98
list的排序和去重
5星 · 资源好评率100%
对于list<people>去重,有以下几种方法:
1. 自定义比较函数或者运算符重载,将其作为去重的关键字,使用STL中的unique()函数进行去重。
2. 使用STL中的set容器,由于set底层是红黑树,自动对元素进行排序和去重。
3. 使用STL中的unordered_set容器,由于unordered_set底层是哈希表,自动对元素进行去重。
举例说明:
假设我们有以下people结构体:
struct people{
string name;
int age;
bool operator==(const people &p) const{
return name==p.name && age==p.age;
}
};
然后我们定义一个list<people>类型的容器lst,并向其中添加若干元素。下面分别介绍三种去重方法:
1. 自定义比较函数或者运算符重载,将其作为去重的关键字,使用STL中的unique()函数进行去重。
auto cmp=[](const people &a,const people &b){
return a.name==b.name && a.age==b.age;
};
lst.sort(cmp);
lst.unique(cmp);
2. 使用STL中的set容器,由于set底层是红黑树,自动对元素进行排序和去重。
set<people> s(lst.begin(),lst.end());
lst.assign(s.begin(),s.end());
3. 使用STL中的unordered_set容器,由于unordered_set底层是哈希表,自动对元素进行去重。
unordered_set<people> s(lst.begin(),lst.end());
lst.assign(s.begin(),s.end());
阅读全文