2020-11-30

本文介绍了如何在C++中利用STL的unique函数去除vector中的重复元素,首先对vector排序,然后调用unique函数,最后通过erase删除多余的元素。此外,还讨论了不排序去重的方法,通过遍历并标记重复元素,再创建新容器存储未标记的元素。示例代码展示了具体实现过程。
摘要由CSDN通过智能技术生成

C++vector去重

STL中Unique函数的作用是去除相邻重复元素

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	vector<int> name1{ 1, 2 , 1, 3, 4 };        //赋值  
	sort(name1.begin(), name1.end());           //排序
	vector<int>::iterator iter = unique(name1.begin(), name1.end());    //用unique去除相邻的查复元素
	name1.erase(iter, name1.end());    //这个我也不懂,反正没他不行

	return 0;
}

数组排完序之后的结果是a[10]={0,1,1,1,4,4,4,7,7,7};

故此段程序的输出结果是0 1 4 7

 

 

另外,也可以实现vector的不排序去重:

方法是在遍历的时候,将相等的元素除第一个外,后面的统统作标记。如:一个字符序列,可以用数字0来标记。应该说,直接将0赋值给这个元素。然后通过另一个容器,在遍历原容器的同时,将没有做标记的元素Push_back 到新容器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值