首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >unique函数

unique函数

作者头像
杨鹏伟
发布2020-09-10 21:33:31
发布2020-09-10 21:33:31
8860
举报
文章被收录于专栏:ypwypw

现在总结一下unique,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址,下面举个例子。 由于返回的是容器末尾,所以如果想得到去重后的size,需要减去初始地址,lower_bound是得到地址,稍微不同。 如:

sz = unique(b + 1,b + n + 1)-(b + 1); sz = unique(a,a + n) - a; 对比一下lower_bound:

pos=lower_bound(b + 1,b + sz + 1,a[i]) - b; 或许你会说可以直接模拟。通过再开一个数组,数字与前一个相同的相同的不加入新数组,仅仅多开了一个数组而已,不久搞定了吗。那么unique到底有什么优势呢?比如,假如要得到相邻不同的字符串组,用unique就方便些(好像模拟也不麻烦,就当为了“美”而用unique吧)。 sort(words.begin(), words.end()); vector::iterator end_unique = unique(words.begin(), words.end()); words.erase(end_unique, words.end());

如果要删去重复元素,可以把尾巴删去即可(或者直接定义新的长度!)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档