#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
using namespace std;
int main(){
string str = "18902678";
cout<<str<<endl;
vector<char> v(str.begin(),str.end());
// 对于无序元素使用unique函数去重前,必须进行排序,因为unique只会去除相邻的重复元素
sort(v.begin(),v.end());
// 声明两个迭代器 its指向 v 开始位置
vector<char>::iterator its,ite;
// its指向去重后返回的迭代器
// 返回的迭代器指向首次出现重复的位置
ite = unique(v.begin(),v.end());
for(its=v.begin();its!=ite;its++){
cout<<*its;
}
cout<<endl;
// 输出 :0126789
for(int i=0;i<v.size();i++){
cout<<v[i];
}
// 输出:01267899
cout<<endl;
// 去重后为什么多出一个数字‘9’?
// 据解释:unique只是遍历了整个容器(数组/向量),然后把连续的重复元素向左合并成一个元素
// 并没有“把重复的元素添加到容器末尾”的功能
// 删除重复元素,从开始出现重复的迭代器 ite 往后删除留下不重复元素
v.erase(ite,v.end());
// 输出:7
cout<<v.size()<<endl;
// 输出:0126789
for_each(v.begin(),v.end(),display);
}
C++unique函数使用简例
最新推荐文章于 2024-05-13 16:34:01 发布