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

沈阳网站建设的价格网页模版

沈阳网站建设的价格,网页模版,更换网站标题,海外平台有哪些文章目录 前言一、set概念介绍二、set的使用1. 插入删除相关2. 查找相关1)find2)count3)lower_bound与upper_bound4)equal_range 三、set的值是不能修改的原理四、基于哈希表的set总结 前言 根据应用场景的不同,STL总…

文章目录

  • 前言
  • 一、set概念介绍
  • 二、set的使用
    • 1. 插入删除相关
    • 2. 查找相关
      • 1)find
      • 2)count
      • 3)lower_bound与upper_bound
      • 4)equal_range
  • 三、set的值是不能修改的原理
  • 四、基于哈希表的set
  • 总结


前言

根据应用场景的不同,STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树)作为其底层结果,容器中的元素是一个有序的序列。下面一依次介绍每一个容器。

首先是set相关:gogogo

在这里插入图片描述


一、set概念介绍

在这里插入图片描述

set就是key_tree的模型:

  1. set是按照一定次序存储元素的容器
  2. 在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。
    set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。
  3. 在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行
    排序。
  4. set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对
    子集进行直接迭代。
  5. set在底层是用二叉搜索树(红黑树)实现的

注意:

  1. 与map/multimap不同,map/multimap中存储的是真正的键值对<key, value>,set中只放 value,但在底层实际存放的是由<value, value>构成的键值对。
  2. set中插入元素时,只需要插入value即可,不需要构造键值对。
  3. set中的元素不可以重复(因此可以使用set进行去重)。
  4. 使用set的迭代器遍历set中的元素,可以得到有序序列
  5. set中的元素默认按照小于来比较
  6. set中查找某个元素,时间复杂度为: l o g 2 n log_2 n log2n
  7. set中的元素不允许修改,它的普通迭代器和const迭代器都是const迭代器
  8. set中的底层使用二叉搜索树(红黑树)

二、set的使用

1. 插入删除相关

在这里插入图片描述

首先,set的插入默认是排序 + 去重
在这里插入图片描述

set的删除:有就删,没有就不做为:
在这里插入图片描述


2. 查找相关

在这里插入图片描述

1)find

首先是find: 如果找到了就会返回对应结点的迭代器,没找到就会返回end()
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


2)count

然后是count:count的作用是返回当前值出现的次数:
对于set来说count并没有太大的作用,可以说和find的作用是一样的。

在这里插入图片描述

但是对于multiset来说就有意义了,因为set是默认去重的,因此插入相同的元素只有一个,但是multiset默认是不去重的,因此count可以统计个数。

在这里插入图片描述

3)lower_bound与upper_bound

lower_bound与upper_bound用来查找一段区间:[low, up)

是一段左闭右开的区间,因为只有这样,我们用迭代器访问的时候
itlow != itup才能不漏最后一个元素。

因此:对于lower_bound找的是>=x的迭代器,
在这里插入图片描述

对于upper_bound找的是>x的迭代器。
在这里插入图片描述

如果没找到就是end()。

对于等于的情况:
在这里插入图片描述

对于的所找的值 在set中找不到:
在这里插入图片描述

4)equal_range

equal_range作用是找到相同的值的一段迭代区间,同样是左闭右开的区间。
它的返回值是一个pair,pair是两个值做组成的一对,其中first是左区间,second是右区间。
在这里插入图片描述
因此我们接收返回值需要用pair<set::const_iterator, const set::const_iterator>,pair中每一个都是set类型的const_iterator,也可以用auto接收。

这里对于set来说,因为set会去重,所以其实equal_range对于set来说没什么意义。
在这里插入图片描述

但是对于multiset来说,就有意义了,nultiset不去重,equal_range就可以返回相同的值的区间,那么我们就可以对这个区间执行删除或者其他操作了。
在这里插入图片描述


三、set的值是不能修改的原理

set只是key的模型,set是不能修改的,它的原理是set的迭代器和const迭代器都是const迭代器。
在这里插入图片描述

在这里插入图片描述


四、基于哈希表的set

除了上述两个版本,还有两个基于哈希表的版本的set.
在这里插入图片描述

这张图展示了 C++ 中的四种无序关联容器(Unordered Associative Containers)。这些容器底层是基于哈希表实现的,所以元素是无序存储的。以下是每种容器的简要介绍:

  1. unordered_set

    • 用于存储唯一的元素集合,每个元素只能出现一次。
    • 适合用于快速查找一个元素是否存在的场景。
  2. unordered_multiset

    • unordered_set 类似,但允许存储重复的元素。
    • 适合用于需要存储非唯一元素的集合。
  3. unordered_map

    • 存储键值对(key-value pairs),每个键(key)是唯一的。
    • 可用于快速查找一个键对应的值。
  4. unordered_multimap

    • unordered_map 类似,但允许存储重复的键。
    • 适合用于需要一个键对应多个值的场景。

由于这些容器基于哈希表,因此它们的查找、插入和删除操作通常具有常数时间复杂度(O(1))。
但是他们是无序的。


总结

到这里set的内容就结束啦,创作不易,求各位大大多多支持~~~😘😘😘
在这里插入图片描述

http://www.dt0577.cn/news/48381.html

相关文章:

  • wordpress 找回密码邮件错误哈尔滨seo网络推广
  • 网站二级菜单是什么意思产品推广方案模板
  • python网站开发教程个人网站规划书模板
  • 如何看网站做打好坏站长工具站长之家
  • 全国论坛网站建设大一网页设计作业成品免费
  • 沭阳网站开发优化推广排名网站教程
  • 上海网站高端seo主要优化
  • 网址无法打开网页是怎么回事石家庄百度快照优化
  • 推广及建设网站网购网站十大排名
  • 新网站做seo长沙seo计费管理
  • github允许做网站服务器网络推广服务合同范本
  • 苏州木渎做网站免费建立网站步骤
  • 银行做网站视频seo最好的工具
  • 西安有哪些网站建设外包公司百度知道一下
  • 网站规划建设方案模板淘宝客推广一天80单
  • 鹤壁做网站公司哪家好关键词智能调词工具
  • 网站首页布局设计工具罗湖区seo排名
  • 网上花店网页设计实训报告百度seo搜索引擎优化
  • 政府网站建设管理方面工作总结互联网运营主要做什么
  • 网站开发投标文件服务承诺部分太原网站建设
  • 网站用什么做备份123网址之家
  • 网站快照是什么公司地址怎么弄在百度上显示
  • 做宣传 为什么要做网站那上海网络营销
  • 定西市建设网站费用google优化推广
  • 重庆市官方网站优化seo深圳
  • 全球首个完全响应式网站自助建设平台在中国诞生口碑营销渠道
  • 网站自己做还是用程序如何优化网站快速排名
  • 企业站用什么程序做网站宁波营销型网站建设优化建站
  • 网站建设SEO优化哪家好搜索引擎优化指南
  • 网站设计不同的原因全国seo搜索排名优化公司