set容器中只能存储键,是单纯的键的集合,其中键是不能重复的。

set支持大部分的map的操作,但是set不支持下标的操作,而且没有定义mapped_type类型。

下面简单总结下set容器的操作:

1、set对象的定义和初始化
set对象的定义和初始化方法包括:

set<T> s;
set<T> s(s1);
set<T> s(b, e);
其中,b和e分别为迭代器的开始和结束的标记。

例如:

#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

set<int> s(v.begin(), v.end());
        printf("%d\n", v.size());
        printf("%d\n", s.size());
        return 0;
}
注意:键是不能重复的。

2、set中数据的插入
与map不同,set中数据只能通过insert()函数进行插入。

例如:

#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

set<int> s;
        s.insert(v.begin(), v.end());
        set<int>::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                printf("%d\t", *it);
        }
        printf("\n");

s.insert(10);
        for (it = s.begin(); it != s.end(); it++){
                printf("%d\t", *it);
        }
        printf("\n");

return 0;
}
3、从set中查找和读取元素
从set中查找同样可以使用count()函数和find()函数,两者的区别在之前的map中已经总结。

例如:

#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

set<int> s;
        s.insert(v.begin(), v.end());
        set<int>::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                printf("%d\t", *it);
        }
        printf("\n");

printf("%d\n", s.count(9));
        printf("%d\n", *(s.find(9)));
        return 0;
}
4、从set中删除元素
从set中删除元素使用到的函数是erase()函数,主要有以下的几种形式:

erase(k);
erase(p);
erase(b, e);
其中,p表示的迭代器指向的元素,b和e分别是迭代器的开始和结束。

例如:

#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

set<int> s(v.begin(), v.end());
        set<int>::iterator it;
        for (it = s.begin(); it != s.end(); it++){
                if (*it == 5){
                        break;
                }
        }
        s.erase(it, s.end());

set<int>::iterator it_1;
        for (it_1 = s.begin(); it_1 != s.end(); it_1++){
                printf("%d\t", *it_1);
        }
        printf("\n");

return 0;
}

C++——set基本操作总结相关推荐

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)

    我们先来看一个关于查找的例子.查找,就是从复杂的数据结构中,找到满足某个条件的元素.通常可从以下两个方面来对数据进行查找操作:​ 根据元素的位置或索引来查找: 根据元素的数值特征来查找. 针对上述两种 ...

  2. pytorch方法,Tensor及其基本操作_重点

    由于之前的草稿都没了,现在只有重写-. 我好痛苦 本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用 ...

  3. Gradle安装使用以及基本操作

    转自:https://www.cnblogs.com/linkstar/p/7899191.html Gradle安装使用以及基本操作 阅读目录 简单介绍 安装 使用idea创建一个web的Gradl ...

  4. c++文件读取空格_程序员术与道:术—C语言对文件进行处理,文件处理的基本操作...

    各种编程语言都实现了文件的基本操作,提供了对应的接口,本篇文章先为你介绍C语言对文件进行处理和文件处理的基本操作.主要从以下几个方面进行介绍: 读取文件 写入文件 重命名文件 读取目录 读取目录下的文 ...

  5. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  6. 【MySQL】缩略语PK NN UQ BIN UN ZF AI G、基本操作语句

    一.缩略语 PK:primary key 主键 NN:not null 非空 UQ:unique 唯一索引 BIN:binary 二进制数据 UN:unsigned 无符号整数(非负数) ZF:zer ...

  7. MySQL中定义fk语句_MySQL基础篇/第3篇:MySQL基本操作语句.md · qwqoo/MySQL-Review - Gitee.com...

    ### 第3篇:MySQL基本操作语句 - MySQL基础操作 #### 排序检索数据 - 之前的数据没有进行排序,其是按照默认在数据表中的数据返回的 - SELECT语句的ORDER BY 子句进行 ...

  8. OpenCV-Java版学习(3.对视频的基本操作)

    前言 上一节我们学习了使用OpenCV对图像进行一些基础操作,现在我们学习对视频进行一些基础的操作. 对视频的基本操作 从相机中读取视频 我们从电脑自带的摄像头捕捉一段视频并在屏幕上显示出来,代码如下 ...

  9. JDBC编程:2(数据库的基本操作)

    数据库的基本操作 查询数据 在开始前先简单地介绍一下什么是静态SQL和动态SQL: 静态SQL,在编译阶段就可以确定数据库要做什么事情.在某种高级语言中,如果嵌入了SQL语句,而这个SQL语句的主体结 ...

  10. c语言栈的实现以及操作_数据结构之链栈基本操作的实现详解(C语言描述)

    迎新过后,来带领你好好学习的小软准时归来,快带着上次学习链表操作的记忆和我开启新的旅程吧: 链栈:就是栈的链式存储结构,简称链栈. 首先我们要考虑的就是链栈的存储结构,由于栈只是在栈顶进行插入和删除操 ...

最新文章

  1. Python之通过for循环比较Python与Ruby编程思想的差别
  2. 如何将mysql文件导入MySQL_如何将mysql5的sql文件导入到mysql4?
  3. reg类型变量综合电路_Verilog中reg型变量的综合效果(待补充)
  4. C#基础学习第一天(.net菜鸟的成长之路-零基础到精通)
  5. mod sim tcp配置_ModSim32-ModScan32Modbus调试工具使用及配置说明
  6. 关于EXCEL打开VBA时发生vbe6ext.olb不能被加载及内 存溢出错误的解决方法
  7. 十月微信小程序导航:官方文档+精品教程+demo集合(10月14日更新)
  8. 从零开始写触摸屏驱动(Linux4.3.2 JZ2440V3 480*272)
  9. shell 修改文件格式
  10. js根据身份证 判断性别 出生、年龄、出生年月日
  11. 驻点(稳定点,临界点,要求平滑) 极值点 拐点 保号性及证明
  12. webim--web端即时通讯的实现
  13. umi首屏加载速度优化
  14. Hive汽车销售数据分析系统实战开发:
  15. 解决Playbook不能充电的问题
  16. Android bugreport工具分析和使用
  17. 刷程序对车危害_刷ECU是什么意思,对车子的伤害有多大?
  18. python sklearn Rideg岭回归--交通流量预测实例
  19. 时间序列分析应用实例(使用Eviews软件实现)
  20. 智能家居之设备配网(理论篇)

热门文章

  1. 苏宁零售云,“动物凶猛”
  2. 基于机器学习的电力系统故障分类预测模型
  3. Win11色温如何进行调整设置
  4. 职业生涯自我规划五步法
  5. C语言及程序设计 套餐 课程主页
  6. 转:色情网站背后的秘密 播放器捆绑木马传毒
  7. Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage
  8. 购物网站商城系统,购物网站毕业设计,B2C网上购物系统毕业设计
  9. EOS竞猜游戏SKR EOS遭黑客攻击,成都链安已于前天发出预警
  10. Latex表格换行垂直居中对齐