容器的去除重复:
第一步:排序
第二步:将重复放到尾部
第三步:删除重复的部分
代码实例如下:
void mysort(vector<int> & v)
{
sort(v.begin(),v.end());//排序将相同的元素放在一起
auto end_unique=unique(v.begin(),v.end());
//将重复的放到最后,不重复元素的尾部
v.erease(end_unique,v.end());//将重复的部分删除
}
其中sort()函数默认是<进行排序
可以根据需求进行排序的重载,改变排序的方式
bool isMax(int a,int b)
{
return a>b;
}
sort(v.begin(),v.end(),isMax);
//改变排序方式
测试代码:
bool isM(int a, int b)
{
return a > b;
}
int main()
{
using namespace std;
vector<int> v = {4,2,8,6,12,45,11,32,78,50,2,8,12,2};
sort(v.begin(), v.end());//默认排序
for (auto c : v)
{
cout << c <<" ";
}
cout << endl;
auto end_unique = unique(v.begin(), v.end());//将重复放到尾部
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
v.erase(end_unique, v.end());//删除重复部分
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
sort(v.begin(), v.end(),isM);//重新排序
for (auto c : v)
{
cout << c << " ";
}
cout << endl;
}
测试结果: