版权声明: https://blog.csdn.net/sandalphon4869/article/details/88680798
vector排序去重
如果元素被保存在vector中,可先对vector里面的元素排序,然后调用unique函数去重,unique(起始迭代器,终止迭代器),返回的是去重以后vector中没有重复元素的下一个位置的迭代器。没有排序。去重无效。
unique的实现原理:判断当前元素是否等于上一个元素,如果等于就将后一个元素向前覆盖掉当前的元素,所以执行完unique()以后返回的迭代器开始到vector.end()的元素都是没有意义的。
//unique使用示例
#include <algorithm>
#include <vector>
uning namespace std;
int main(){
vector<int> v;
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
//sort和unique是algorithm库里的
}
void print_sorted(vector<string> vec)
{
sort(vec.begin(),vec.end());
vector<string>::iterator last=unique(vec.begin(),vec.end());
for(vector<string>::iterator i=vec.begin();i!=last;i++)
{
cout<<*i<<endl;
}
}
vector不排序去重
创建新的vector,将要处理的vector中的不重复的元素写入到新的vector中
void print_readingOrder(vector<string> vec)
{
vector<string> vecprint;
vecprint.push_back(vec[0]);
for(int i = 1;i<vec.size();i++)
{
bool tag=true;
for(int j =0;j<i;j++)
{
if(vec[i]==vec[j])
{
tag=false;
break;
}
}
if(tag==true) vecprint.push_back(vec[i]);
}
for(int i=0;i<vecprint.size();i++)
{
cout<<vecprint[i]<<endl;
}
}