STL-set-用法

2023-10-26

set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值;另外,还得确保根节点的左子树的高度与有字数的高度相等,这样,二叉树的高度最小,从而检索速度最快。要注意的是,它不会重复插入相同键值的元素,而采取忽略处理。

        平衡二叉检索树的检索使用中序遍历算法,检索效率高于vector、deque、和list的容器。另外,采用中序遍历算法可将键值由小到大遍历出来,所以,可以理解为平衡二叉检索树在插入元素时,就会自动将元素按键值从小到大的顺序排列。

        构造set集合的主要目的是为了快速检索,使用set前,需要在程序头文件中包含声明“#include<set>”。


set的各成员函数列表如下:

c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器

c++ stl容器set成员函数:clear()--清除所有元素

c++ stl容器set成员函数:count()--返回某个值元素的个数

c++ stl容器set成员函数:empty()--如果集合为空,返回true

c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器

c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器

c++ stl容器set成员函数:erase()--删除集合中的元素

c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器

c++ stl容器set成员函数:get_allocator()--返回集合的分配器

c++ stl容器set成员函数:insert()--在集合中插入元素

c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数

c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值

c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器

c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器

c++ stl容器set成员函数:size()--集合中元素的数目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL-set-用法 的相关文章

  • 向量(插入然后排序)或集合哪种方法更快?

    我有数字序列 未排序 无重复 目标是对它们进行排序 方法一 插入向量 O n 使用排序算法并排序 O nlogn 方法2 插入集合 o nlogn 哪种方法会更快 我觉得设置会更快 因为向量中的每个插入都必须分配 完整的数组元素并复制它然后
  • C++ 容器的一般用例

    的一般用例是什么C 标准库容器 http www cplusplus com reference stl bitset deque list map multimap multiset 优先队列 queue set stack vector
  • 有没有办法使用基于范围的 for 循环迭代最多 N 个元素?

    有没有一种好的方法可以使用基于范围的容器来迭代容器中的最多 N 个元素for标准库中的循环和 或算法 这就是重点 我知道我可以使用 旧 for带条件循环 基本上 我正在寻找与此 Python 代码相对应的内容 for i in arr N
  • 删除元素时映射迭代器如何失效? [复制]

    这个问题在这里已经有答案了 使用擦除方法时 迭代器何时以及如何在映射中失效 例如 std map lt int int gt aMap aMap 33 1 aMap 42 10000 aMap 69 100 aMap 666 1 std m
  • STL容器内存问题[重复]

    这个问题在这里已经有答案了 我正在 Linux Fedora 10 和 CentOS 5 中使用 gcc 4 3 2 并使用 STL 容器实现我自己的图形库 然后我发现了一些内存问题 当我构建图表时 我使用了大量内存来查看top或其他内存使
  • C++中的地图数据结构是什么[重复]

    这个问题在这里已经有答案了 C 中以下代码行使用的数据结构是什么 map
  • 使用 std 算法将容器分区/批量/分块为大小相等的块

    我遇到过一种情况 我必须将一组记录批量处理到数据库中 我想知道如何才能做到这一点标准算法 给定 10002 条记录 我希望将其划分为 100 条记录的 bin 进行处理 其余为 2 条记录的 bin 希望下面的代码能够更好地说明我想要完成的
  • front() 和 begin() 之间的区别

    两者有什么区别front and begin 许多 STL 容器中出现的函数 begin http www cplusplus com reference stl list begin 返回一个可用于迭代集合的迭代器 而front http
  • 从 char* 初始化 std::string 而不复制

    我遇到一种情况 我需要处理大量 许多 GB 数据 如下所示 通过附加许多较小的 C char 字符串来构建一个大字符串 修剪绳子 将字符串转换为 C const std string 进行处理 只读 repeat 每次迭代中的数据都是独立的
  • C++ std::set 更新很乏味:我无法就地更改元素

    我发现更新操作std set乏味 因为没有这样的 API参考参数 http en cppreference com w cpp container set 所以我目前所做的是这样的 find element in set by iterat
  • 如何使用类初始化 STL 向量/列表而不调用复制构造函数

    我有一个 C 程序 它使用包含类实例的 std list 如果我打电话 例如myList push back MyClass variable 它经历创建临时变量的过程 然后立即将其复制到向量 然后删除临时变量 这远没有我想要的那么高效 而
  • STL:为向量编写“where”运算符

    我需要根据几个布尔谓词找到向量中的索引 ex vector
  • C++ 中模板和 STL 的缺点 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用 STL 或模板有什么缺点吗 是否存在不适合的情况 首先 如果它们可以帮助您解决问题 您应该使用它们 模板是 C 非常重要的一部分 并且多年
  • C++ 中有标准的日期/时间类吗?

    C stl 有标准时间类吗 或者我是否必须在写入流之前转换为 c 字符串 例如 我想将当前日期 时间输出到字符串流 time t tm ostringstream sout sout lt lt tm lt lt ends 在本例中 我将当
  • 迭代器后继者

    我想用另一个迭代器 同类 的后继者初始化一个迭代器 任意类型 以下代码适用于随机访问迭代器 但不适用于前向或双向迭代器 Iterator i j 1 一个简单的解决方法是 Iterator i j i 但这不起作用初始化语句for 循环的
  • 执行 set_difference 时出错:变量结果不是结构

    我在函数外部全局声明了一个设置变量 std set
  • STL容器如何复制对象?

    我知道 STL 容器 比如vector添加对象时复制该对象 push back方法如下 void push back const T x 我很惊讶地发现它把该项目作为参考 我编写了一个示例程序来看看它是如何工作的 struct Foo Fo
  • uninitialized_copy memcpy/memmove 优化

    我最近开始研究 MSVC 实现中的 STL 那里有一些不错的技巧 但是我不知道为什么使用以下标准 The std uninitialized copy被优化为一个简单的memcpy memmove如果满足某些条件 据我了解 输入范围可以是m
  • 如何将 list 对象附加到另一个对象

    在 C 中 我有两个list
  • 为什么这个 C++ STL 分配器不分配?

    我正在尝试编写一个派生自的自定义 STL 分配器std allocator 但不知何故所有的电话allocate 去基础班 我已将范围缩小到以下代码 template

随机推荐

  • Point Cloud Library学习之ICP迭代最近点匹配法NDT2D正态分布转换法

    参考来源 https pointclouds org documentation classpcl 1 1 registration html ab1d64f86162b2df716ead8d978579c11 http epsilonjo
  • ctab提取dna流程图_核酸提取、纯化与常见问题解答

    写在前面 核酸提取包括DNA提取 RNA提取 质粒提取 核酸是遗传信息的携带者 是基因表达的物质基础 是分子生物学研究的主要对象 无论是进行核酸的结构还是功能研究 首先都需要对核酸进行提取和纯化 核酸是生命的最基本物质之一 可分为DNA和R
  • Kotlin协程的简单用法(GlobalScope、lifecycleScope、viewModelScope)

    协程 Coroutine 协程就像非常轻量级的线程 线程是由系统调度的 线程切换或线程阻塞的开销都比较大 而协程依赖于线程 但是协程挂起时不需要阻塞线程 协程是由开发者控制的 所以协程也像用户态的线程 非常轻量级 一个线程中可以创建任意个协
  • 目前开源数据集整理

    Attention 我的Dr Sure项目正式上线了 主旨在分享学习Tensorflow以及DeepLearning中的一些想法 期间随时更新我的论文心得以及想法 Github地址 https github com wangqingbaid
  • RabbitMQ系列(十)RabbitMQ进阶-Queue队列参数详解-死信交换机

    RabbitMQ进阶 Queue队列参数详解 死信交换机 文章目录 RabbitMQ进阶 Queue队列参数详解 死信交换机 1 Dead Letter Exchange 介绍 2 死信消息方式 2 1 消息被拒绝 2 1 1 channe
  • vim 使用set paste 解决多行复制粘贴乱序问题

    要粘贴的话 先set paste 然后粘贴 然后再set nopaste Reference https blog csdn net Dream Flying BJ article details 54708157
  • Ethere以太坊学习笔记

    以下不一定全 准确率99 1字节等于2gas 1 变量类型 是否是真 bool 数字类型 int uint 有符号和无符号整形 默认256 int8到uint256 地址类型 address 20字节长度 属性方法 send call ca
  • Sa-Token – 轻量级权限认证框架!

    本页目录 Sa Token介绍 相关链接 框架应用原理 接入权限框架 sa token Maven依赖 添加配置文件 配置全局异常捕获 开启Sa Token注解鉴权 添加事件监听器 添加角色认证 授权 使用Sa Token Demo 引入R
  • 【微信小程序系列:五】小程序适老化自动适配工具miniprogram-elder-transform---微信老年关怀模式下小程序字体适配微信字体

    1 先言 这个工具我网上基本找不到任何一篇文章说这个miniprogram elder transform的使用的 既然没有 那咱就自己写第一篇 Android字体大小标准默认16px iOS字体大小标准默认17px 个人觉得 微信用户设置
  • 【单目标优化算法】烟花优化算法(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 通
  • IPsec的主模式(Main mode)和积极模式(Aggressive mode)

    主模式和积极模式的信息交换机制不同 主模式有6条消息要交换 2个一组对称 主模式中 第1 2条信息中 双方交换了一些协商信息 如认证算法 hash 加密算法 DH组 认证机制等 第3 4条信息中 双方交换了公钥 在交换了公钥之后 就可以根据
  • 程序员面试什么最重要?

    来自 http www cnblogs com weidagang2046 archive 2013 02 15 on interview html 程序员面试一直是社区乐于讨论的热门话题 我自己从06年实习以来 先后经历了4家软件公司 全
  • 软件工程导论第六版 第五章 总体设计知识点总结

    目录 总体设计概述 目的 任务 设计过程 设计原理 什么是模块 什么是模块化 模块化的优点 模块化和软件成本 逐步求精 什么是逐步求精 Miller法则 抽象 信息隐藏和局部化 什么是信息隐藏 信息隐藏的优点 模块独立 耦合 内聚 内聚程度
  • XML基础入门:关于XML建模

    今天我给大家分享关于XML建模的基础 目录 今天我给大家分享关于XML建模的基础 一 什么是XML建模 就是将XML配置文件以模型的方式 进行输出操作 二 如何将XML建模 步骤 实例对象模型 1 ForwardModel 2 Action
  • 微信小程序支付

    微信小程序支付接口需要的参数timeStamp nonceStr package signType paySign openid是在登录时获取的 只需要调取token里的内容就可以了 点击事件通过cardid来判断与传值
  • 在blender中使用python脚本批量复制平移生成模型

    本案例需求 从基本的建筑单元按照字形平面布局生成综合建筑体 先在blender中用手工制作好一个建筑单元 名称定为 cube 然后在blender中打开一个 Text Editor 编辑窗口 在里面写入python脚本 import bpy
  • ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

    报错内容 ImportError usr lib x86 64 linux gnu libstdc so 6 version GLIBCXX 3 4 29 not found required by home lab118 anaconda
  • 图解SSL/TLS协议

    http www ruanyifeng com blog 2014 09 illustration ssl html 一 SSL协议的握手过程 开始加密通信之前 客户端和服务器首先必须建立连接和交换参数 这个过程叫做握手 handshake
  • 联想小新潮7000安装deepin 系统

    deepin 是国内比较好的开源linux操作系统 安装也比较方便 1 下载ISO镜像文件和深度启动盘制作工具 deepin官网下载ISO 启动盘制作工具下载 2 按照官网的指导 一步一步安装系统 官网指导安装过程 win10进入bios的
  • STL-set-用法

    set集合容器实现了红黑树 Red Black Tree 的平衡二叉检索树的的数据结构 在插入元素时 它会自动调整二叉树的排列 把该元素放到适当的位置 以确保每个子树根节点的键值大于左子树所有节点的键值 而小于右子树所有节点的键值 另外 还