C++ 的 vector 元素去重

版权声明: 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;
	} 

} 

https://www.cnblogs.com/cxq0017/p/6555533.html

https://www.cnblogs.com/aminxu/p/4686332.html

猜你喜欢

转载自blog.csdn.net/sandalphon4869/article/details/88680798
今日推荐