首页 > 其他分享 >set 的详细用法(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)

set 的详细用法(set 排序、set 的遍历、set 的多种倒序遍历方法、set 的基本成员函数)

时间:2024-08-22 18:25:40浏览次数:5  
标签:insert 遍历 iterator 迭代 容器 mySet set 倒序

目录

一:set 的简介

二:set的使用(要包含头文件)

1. set 的定义

2.set 的基本成员函数

3.set 的遍历

(1)迭代器 iterator(即升序输出)

(2)倒序输出

1. rbegin()和 rend()

2.当然,也可以逆向思维一下。

^^3. 用 greater 实现降序排列

三:应用基本成员函数的代码

【总结】有上述代码可以看出,插入的数据是无序的,且包含重复的数据,但输出结果是有序的,由小到大依次输出,且不包含重复的,直观说明了 set 容器 “去重” 的特点,且说明了 set 容器是默认数据由低到高即升序来排列。

四:set 排序

这里主要讲存储结构体时该如何排序:要重载运算符

五:简单例题

六:总结


一:set 的简介

set 就是集合的意思,而集合的特点就是不会出现重复的内容,这也就是 set 容器存储数据的特点,即去重

二:set的使用(要包含头文件<map>)

1. set 的定义
set<存储的类型> mySet; 
2.set 的基本成员函数

insert()//插入元素
count()//count()计数,但 set 中没有重复元素,所以只能返回0或 1,所以可以用来判断容器中是否存在某个元素,若有返回1,否则0
size()//返回容器的尺寸,也可以是元素的个数
erase()//删除容器中某个元素
clear()//清空容器中的元素
empty()//判断容器是否为空 ,若是,返回 1,否则,返回 0
begin()//返回第一个节点的迭代器
end()//返回最后一个节点加 1 的迭代器 
rbegin()//反向迭代器 
rend()//反向迭代器

3.set 的遍历
(1)迭代器 iterator(即升序输出)
#include <iostream>
#include <set> 
#include <string>
using namespace std;
int main()
{
	set<int> mySet;
	// 
	mySet.insert(1);
	mySet.insert(3);
	mySet.insert(2);
    // 
    set<int>::iterator it;//使用迭代器 
	for(it=mySet.begin();it!=mySet.end();it++)
	cout<<*it<<" "; 
	
}

(2)倒序输出
1. rbegin()和 rend()

需要使用反向迭代器 reverse_iterator it

#include <iostream>
#include <set> 
using namespace std;
int main()
{
	set<int> mySet;
	// 
	mySet.insert(1);
	mySet.insert(3);
	mySet.insert(2);
    // 
    set<int>::reverse_iterator it;//使用反向迭代器 
	for(it=mySet.rbegin();it!=mySet.rend();it++)
	cout<<*it<<" "; 
	
}

标签:insert,遍历,iterator,迭代,容器,mySet,set,倒序
From: https://blog.csdn.net/wcj_______/article/details/141306728

相关文章

  • 详细讲述 Vue3 的 <script setup>
    <scriptsetup>是Vue3引入的一种新的 <script> 标记的用法,其本质是一个语法糖。它极大简化了单文件组件(SFC)的开发体验,目的是让代码更简洁、易读,同时减少模板和逻辑之间的重复。1.基本用法<!--使用<scriptsetup>--><template><div><p>message:{{message......
  • 8.泛型与Set集合(上篇)
    目录1.泛型2.集合类体系结构3.Set集合4.HashSet集合5.TreeSet集合1.泛型1.1泛型的介绍泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制如果我们没有给集合指定类型,默认认为所有的数据类型都是Object类型此时可以往集合添加任意的数据类型带来一个坏处:我......
  • java 读取pdf写成流报错PDF contains an encryption dictionary, please remove it wi
    java读取pdf写成流报错PDFcontainsanencryptiondictionary,pleaseremoveitwithsetAllSecurityToBeRemoved()orsetaprotectionpolicywithprotect()如何解决,如果需要引入依赖,需要哪些依赖 问题原因是PDF文件被加密了,需要使用PDFBox的相关方法来处理加密。 解......
  • setupres.dll丢失解决方案速递:全面修复流程,从简易排查至高级修复策略
    遇到setupres.dll文件丢失问题,可以按照以下步骤尝试修复:1.系统文件扫描:首先,利用系统自带的文件检查工具来修复潜在的系统文件问题。打开命令提示符(以管理员身份运行),输入sfc/scannow并回车,等待扫描并修复完成。2.Windows更新:确保操作系统是最新版本,因为有时这类问题可通......
  • 批量图像识别的快速遍历技巧
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言最近,不少同学在Q群中频繁提出疑问:在日常UI测试过程中,如何快速准确地识别页面上的多个元素,或在日常测试中,如何高效地遍历目标图片列表,以确认画面中是否包......
  • df.iterrows() 是 Pandas 中的一个方法,用于在遍历 DataFrame 时,逐行返回每一行的索引
    df.iterrows()是Pandas中的一个方法,用于在遍历DataFrame时,逐行返回每一行的索引和数据。它生成一个迭代器,每次迭代时返回一个(index,Series)对,index是行索引,Series是该行的数据。详细解释df.iterrows():这个方法遍历DataFrame的每一行。每次迭代时,返回的是(ind......
  • 【题解】Solution Set - NOIP2024集训Day12 树上启发式合并
    【题解】SolutionSet-NOIP2024集训Day12树上启发式合并https://www.becoder.com.cn/contest/5472「CF600E」Lomsatgelral直接dsuontree。记录每一个颜色的出现次数。「IOI2011」Race之前是用点分治做的。考虑dsuontree。每个子树内维护到根节点的距离为\(x\)......
  • Vue3父子通信-setup+经典父组件与子组件el-dialog
    一、父组件绑定方法,引入子组件并传递数据和方法<el-buttonsize="small"plaintype="primary"@click="click_add_notice">+添加公告</el-button><AddNoticeDialogv-model="AddNoticeDialogDialogVisible"@addNoticeSucc......
  • Element Plus表单调用resetFields方法失效
    问题描述:你会发现在第一次点击新增按钮的时候然后再点击编辑按钮,再点击新增按钮表单是可以正常清空的。但是如果你第一次点击编辑按钮,表单数据回显,关闭窗口再点击新增按钮发现编辑的数据竟然还在,就很玄乎。而且,你点击编辑其他数据再点击新增按钮发现竟然是第一次点击编辑的数据!......
  • vue3中script标签的setup实现原理
    概述当vue3新建组件时,我们有两种选择选项式和组合式,如下所示传统方式<script>import{ref}from"vue";exportdefault{setup(){constcount=ref(0);consthandleClick=()=>{count.value++;};return{count,handleClick......