vector去重方法

这篇具有很好参考价值的文章主要介绍了vector去重方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vector去除重复元素的方法是:
1.使用sort对vector排序,sort的第三个参数可以使用一个简单的布尔类型函数进行选择,正序或逆序;
2.使用unique将所有的重复元素放到末尾,返回的结果是一个迭代器类型的数据,就像vec.begin()那样。
3.erase删除重复的内容,删除的区间是左闭右开

#include<bits/stdc++.h>
using namespace std;

bool cmp(int a,int b){
	return a>b; //这里决定是逆序排列
}
//iterator 迭代内容 
//unique 重复元素放到最后 
//erase 删除区间内容 
int main(){
	vector <int> vec;
	vector <int>::iterator it;
	for(int i=0;i<6;i++){
		vec.push_back(i);
	}
	vec.push_back(5);
	vec.push_back(4);
	sort(vec.begin(),vec.end());
	it=unique(vec.begin(),vec.end());  //”删除”序列中所有相邻的重复元素(只保留一个)。
	//此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了 
	
	//unique的返回值是重复元素的第一项 
	vec.erase(it,vec.end()); //删除左闭右开的区间内的东西 
	for(auto e:vec){
		printf("%d ",e);
	}
} 

学到的新内容:
1.使用 vector ::iterator it; 这个语句可以定义一个int类型的迭代器数据格式,用来作为一个迭代类型的变量。
2.auto double a;如果忽略double 默认是int。在for循环的格式中,auto 的变量类型是根据冒号后面的内容类型决定。
疑惑:
auto在for循环中可以定义一个变量,进行迭代。但是不明白其真正用法,如下代码中,不理解为什么auto可以这样用。文章来源地址https://www.toymoban.com/news/detail-549437.html

//删除,需要保证指针链接性
for (auto it = vec.begin(); it != vec.end();) {
	if (*it == 4)it = vec.erase(it);//erase函数会返回删除该位的下一位的指针
	it++;
}
来自:https://blog.csdn.net/weixin_51797626/article/details/123317216

到了这里,关于vector去重方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【linux】linux去重的方法

    多种linux文本去重方法 awk去重法【1】 awk去重法【2】 awk去重法【3】 sort去重法【1】 sort去重法【2】 (用于多个文件一次性去重) sort去重法【3】 (查找非重复行) sort去重法【4】 (统计字符出现次数) grep去重法【1】 grep去重法【2】

    2024年02月11日
    浏览(16)
  • List去重的几种方法

    现在设有Integer类型的ArrayList,list=[0,1,1,3,3,4,5] 1.使用contains 2.使用TreeSet/HashSet/LinkedHashSet 3.Stream流 4.使用迭代器Iterator 5.list中的remove方法

    2024年02月05日
    浏览(17)
  • 5. Hive的三种去重方法

    Hive的三种去重方法 1. distinct 注意事项: distinct 不能单独用于指定某一列,必须放在 select 中所有字段的最前面,否则会报错 distinct 是对 select 后面所有字段的组合进行去重 ,并不是只对紧跟其后的 column1 去重。distinct 的作用范围是整个 SELECT 子句的结果集 distinct 对 NULL 是不

    2024年02月13日
    浏览(16)
  • JS数组去重的12种方法

    Set 对象是 ES6 中新定义的数据结构,类似数组,它允许存储任何类型的唯一值,不管是原始值还是对象引用。 Array.from() 方法 就是将一个类数组对象或者可遍历对象转换成一个真正的数组 不考虑兼容性,这种去重的方式代码最少。这种方法无法去掉 {} 空对象,后面的高阶方

    2024年02月06日
    浏览(14)
  • Java 算法篇-链表的经典算法:有序链表去重、合并多个有序链表

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍         文章目录          1.0 链表的说明          2.0 有序链表去重的实现方式         2.1 有序链表去重(保留重复的节点) - 使用递归来实现         2.2 有序链表去重(保留重复的节点) - 使用双指针

    2024年02月05日
    浏览(18)
  • 分享6个对象数组去重的方法

    大家好,关于对象数组去重的业务场景,想必大家都遇到过类似的需求吧,针对这样的需求,你是怎么做的呢。 下面我就先和大家讨论下基于对象的某个属性如何去重。 使用 filter() 方法过滤掉重复的元素,使用 findIndex() 方法判断对象是否重复,代码如下: 使用 reduce() 方法

    2024年02月16日
    浏览(10)
  • mysql去重查询的三种方法

    数据库生成环境中经常会遇到表中有重复的数据,或者进行关联过程中产生重复数据,下面介绍三种剔除重复数据的方法,请针对自己的应用场景选择使用。 下图测试数据中user_name为lilei、zhaofeng的用户是重复数据。 代码如下(示例): 如下图,已将数据剔重,重复数据仅保

    2024年02月06日
    浏览(17)
  • c++算法——vector

            vector 是标准模板库的一个容器,直接翻译为“向量”,一般来成“可变长数组”,也即“长度会根据需要而变化的数组”。在竞赛中有些题目需要很大的很大的数组,而有些还用不上就需要用到 vector 。         使用 vector 首先要加#include vector,当然万能头也

    2023年04月24日
    浏览(17)
  • JavaScript数组去重,大小排序的两种方法

    方法有很多种,本文列举其中两种 声明一个数组 数组去重 1:利用ES6中的 Set 方法去重(最常用) 原理: Set数据结构中所有元素都是唯一的,没有重复 Set 本身是一个构造函数,用来生成 Set 数据结构 2:利用indexOf去重 原理: indexof() 可返回某个指定的字符串值在字符串中首

    2024年02月06日
    浏览(14)
  • Python列表去重的几种方法和实例

    Python列表去重的几种方法和实例 在 Python 中,列表去重有多种方法,下面分别介绍这些方法的实现。 set() 函数可以将列表转换成集合,集合中不允许有重复的元素,因此可以实现列表去重。 可以使用列表推导式,将列表中不重复的元素生成一个新的列表。 通过字典的键唯一

    2024年02月06日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包