当前位置: 首页 > news >正文

set的使用(c++)

STL里面已经为我们实现了两种红黑树,一种是存储关键字的set,另一种是存储双关键字的map,今天主要来了解set,无论是set还是map后面都跟一个multi,它们区别是set 不能存相同元素, multiset 可以存相同的元素(比如往set容器里面插入十个1,最终在set里面之后存储一个1,往multiset容器里插入十个1,这个容器里面就会存在十个1),其余的使⽤⽅式完全⼀致。因此,我们有时候可以⽤ set 帮助我们给数据去重

1 创建set

#include <iostream>
#include <set>
using namespace std;
int main()
{
    set<int> mp1;
    set<string> mp2;
    return 0;
}

2 size / empty

  1. size :返回 set 中实际元素的个数。时间复杂度: O(1) 。
  2. empty :判断 set 是否为空。时间复杂度: O(1) 。

3 begin / end

  • 迭代器,可以使⽤范围 for 遍历整个红⿊树。
  • 遍历是按照中序遍历的顺序,因此是⼀个有序的序列。

4 insert

  • 向红⿊树中插⼊⼀个元素
  • 时间复杂度: O(log N) 。

5 erase

  • 删除⼀个元素
  • 时间复杂度: O(log N) 。

6 find / count

  1. find :查找⼀个元素,返回的是迭代器。时间复杂度: O(log N) 。
  2. count :查询元素出现的次数,⼀般⽤来判断元素是否在红⿊树中。时间复杂度:O(log N)
  • 如果想查找元素是否在 set 中,我们⼀般不使⽤ find,⽽是⽤ count。因为 find 的返回值是⼀个迭代器,判断起来不⽅便。但是使用count接口,它的返回值要么是0,要么是1,如果是0说明它不存在这颗红黑树中,如果是1说明他存在红黑树中,判断起来比较方便

7 lower_bound / upper_bound

  1. lower_bound :⼤于等于 x 的最⼩元素,返回的是迭代器;时间复杂度: O(log N) 。
  2. upper_bound :⼤于 x 的最⼩元素,返回的是迭代器。时间复杂度: O(log N) 。

相关文章:

  • JVM基础---java类加载机制(类的生命周期,类加载器,双亲委派模型)
  • XSS攻击(跨站脚本攻击)详解与实战
  • 零基础入门机器学习 -- 第五章决策树与随机森林
  • BSD协议栈:多播
  • Visual Basic语言的数据类型
  • Logo语言的图形用户界面
  • jar命令解压jar包及更新jar的配置文件
  • RTMP(Real-Time Messaging Protocol)
  • 网工项目理论1.11 网络出口设计
  • seata基本使用
  • 【Java】Mongodb
  • UI自动化教程 —— 元素定位技巧:精确找到你需要的页面元素
  • Kafka偏移量管理全攻略:从基础概念到高级操作实战
  • 如何在yolov8系列运行自己的数据集
  • NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略
  • 嵌入式人工智能应用-第四章 决策树 6
  • PostgreSQL 创建数据库
  • 一个基于Spring Boot和Vue.js的web商城系统-邻家小铺
  • SyntaxError: invalid syntax
  • MYSQL中的性能调优方法
  • 丹泽尔·华盛顿惊喜收获戛纳终身成就奖
  • 第78届世界卫生大会20日审议通过“大流行协定”
  • “80后”湖南岳阳临湘市市长刘琦任临湘市委书记
  • 推动粒子治疗更加可及可享!龚正调研上海市质子重离子医院
  • LPR名副其实吗?如果有所偏离又该如何调整?
  • “马上涨价”再到“吞下关税”,美政策让沃尔玛“输两次”