【set 与 multiset】

告别复杂配置!5分钟在Vue/React项目中集成讯飞语音听写WebSocket API 本文详细介绍了如何在Vue/React项目中快速集成讯飞语音听写WebSocket API,实现高效语音识别功能。通过对比不同通信方案,突出WebSocket在实时语音交互中的优势,并提供框架适配、音频处理及性能优化等关键技术点,帮助开发者5分钟内完成专业级语音听写功能集成。 阅读详情

------ 用法概括

· 实质:对于 set 容器,可以理解为 “有序集合”,即 排序+去重
对于 multiset 容器,可以理解为 “有序多重集”,即 排序+不去重

set<int> s; // set与multiset的遍历
multiset<int> ss; 
int main() {
    int x;
    for(int i=1; i<=5; i++) {
    	scanf("%d",&x);
    	s.insert(x);
    	ss.insert(x);
	}
	set<int>::iterator it; // set的迭代器 
	for(it=s.begin(); it!=s.end(); it++)
	    printf("%d ",*it);
	puts("");
	multiset<int>::iterator its; // multiset的迭代器 
	for(its=ss.begin(); its!=ss.end(); its++)
	    printf("%d ",*its);
	return 0;
}

输入内容:
9 5 0 5 7
输出结果:
0 5 7 9
0 5 5 7 9

注:set和multiset 不能同 vector 数组一样用 [i] 取值 (0 <= i < n)

· 声明:结构类型也可以自定义结构体

set <结构类型> s;
multiset <结构类型> s;

附:而排序顺序类似 大根堆,内部排序依靠 “<” 运算符,依旧可以重载运算符,详细参考 优先队列重载运算符部分

------指令概括

size/empty/clear/迭代器

  • 注意:相对于 vector 的迭代器具有所有指针运算能力,而 set和multiset 的迭代器称为 “双向访问迭代器” ,仅支持 “ ++” 和 “ --” 算术相关操作,其时间复杂度都是 O(log n)。
  • 其余均与 vector 类似,详细参考 vector 指令概括

begin/end

  • s.begin():返回集合中 最小元素 的迭代器
  • s.end():返回集合中最大元素的下一个位置的迭代器,同 vector 类似,属于 “前闭后开” 的形式。因此 --s.end() 指向集合中 最大元素 的迭代器

insert

  • s.insert(x):把元素 x 插入到集合 s 中,时间复杂度为 O(log n)
  • set:在 set 集合中,若元素已存在,则不会重复插入该元素,对集合状态无影响

find

  • s.find(x):在集合 s 中查找等于 x 的元素,并返回指向该元素的 迭代器。若不存在,则返回 s.end()。时间复杂度为 O(log n)
lower_bound/upper_bound
  • 这两个函数的用法与 find 类似,但查找方式略有不同,时间复杂度 O(log n)
  • s.lower_bound(x):查找 >=x 的元素中最小的一个,并返回指向该元素的迭代器
  • s.upper_bound(x):查找 >x 的元素中最小的一个,并返回指向该元素的迭代器

erase

  • s.erase(it):设 it 是一个迭代器,则从集合 s 中删除迭代器 it 指向的元素,时间复杂度为 O(log n)
  • s.erase(x):设 x 是一个元素,则从集合 s 中删除 所有等于 x 的元素,时间复杂度为 O(k + log n),其中 k 为被删除的元素个数
  • 若想从 multiset 中删除至多 1 个等于 x 的元素,可以执行:
    if( (it = s.find(x)) != s.end() ) s.erase(it);

count

  • s.count(x):返回集合 s 中等于 x 的元素个数,时间复杂度为 O(k + log n),其中 k 为 元素 x 的个数
部分 大部分 绝大部分 摘抄于《算法进阶》(一本好书)
c++STL之setmultiset c++STL之setmultiset前言setmultiset 前言 set/multiset以rb_tree为底层结构,因此有元素自动排序特性。排序的依据是key,而set/multiset元素的value和key合二为一:value就是key。 我们无法使用set/multiset的iterators改变元素值(因为key有其严谨排列规则)set/multiset的iterator是其底部RB tree的const-iterator,就是为了禁止用户对元素赋值。 set元素的key必须独一无二,因 阅读详情

相关推荐

Unity技术开发干货 - 总目录

总目录 欢迎大家来到 passion 的《Unity技术开发干货》开始前博主先列出学习的大纲,同时也供大家学习参考,如果有什么问题,欢迎留言。 一.Unity基础: Unity基础-脚本生命周期 Unity基础-向量 Unity基础-寻路系统 Unity基础-物理系统 Unity基础-Mecanim动画系统 Unity基础-UGUI Unity基础-灯光 Unity-UGUI之Event System Unity-2018-粒子系统 Unity-协程入门 Unity-2D物理引擎、铰链、效应器 Unity-

TxNet 4156

C++函数的用法

set用法 set < int > s//定义 *s.begin()    返回第一个元素 *s.end()      返回末尾元素 s.clear()    删除s所有的元素 s.empty()     判断set容器是否为空 s.size()      返回当前set容器中的元素个数 s.insert() 插入一个元素 s.erase...

wyyyyyyyy_的博客 1110

Docker部署VLLM-Qwen3[代码]

本文详细介绍了如何在Docker容器中本地部署VLLM大模型推理框架,特别针对Qwen3系列模型。内容涵盖了背景、环境准备、网络设置、Nvidia驱动安装、Docker安装、VLLM镜像下载、NVIDIA-Container-Toolkit安装以及模型部署的具体步骤。文章强调了Docker容器化在资源隔离、快速部署、可扩展性和安全性方面的优势,并提供了详细的命令和参数解释,帮助读者顺利完成部署过程。

(七)Python小甲鱼入门教程笔记——列表(Ⅰ~Ⅱ),关于append、extend、切片、insert、remove、pop、clear

列表Ⅰ 1、列表,例如 e = [1,2,3,4,5,‘芳草萋萋鹦鹉洲哦’] 2、列表索引: # 通过下标获取列表单个元素方式 e = [1,2,3,4,5,'芳草萋萋鹦鹉洲哦'] for each in e: print(each) print(e[5]) print(e[-1]) print(e[len([e])-1]) ================ RESTART: D:/ALIproject/pythonPractise/4_list.py =============== 1 2 3 4

芳草萋萋鹦鹉洲哦 1405

c++中有关哈希表的STL操作

set 基于红黑树实现,可以进行去重和排序操作。O(logn)。 一些常用的函数有: s.insert(x); s.erase(x); s.size(); s.find(x); s.count(x); //因为有去重性质,count()统计出现的次数要么是0,要么是1,可以替代find() s.empty(); unordered_set O(1)。 一些常用的函数: s.insert(); s.erase(); s.find(); s.count(); s.empty(); map<s..

drhrht的博客 1266

upper_bound和lower_bound用法(史上最全)

相信我,比别人的全。

weixin_43967256的博客 1万+

C语言bound函数,C/C++-STL中lower_boundupper_bound的用法以及cmp函数

ng-repeat里创建的自定义指令在ng里,所有的指令在按照意愿正常工作之前的都需要编译一下,包含angularJS的自定义指令. ng模板里的所有指令都会在angularJS加载完毕之后编译一下,所以那些自定义指令和事件才能工作. ...MSDTC事务配置最近再用SSIS做数据归档,里面用到了分布式事务.在开发阶段是在一台计算机上运行只要是启动分布式服务就没什么问题,可是昨天把它部署到uat...

weixin_39901203的博客 590

C++set multiset

set底层为红黑树 (Red-Black Tree)

weixin_61091020的博客 1万+

C++】—— set multiset

set

yusjushd的博客 2620

setmultiset详解,保证学会

听说今年TGT3用到了multiset,蒟蒻我还不会呢,抓紧过来学一发setmultiset。 内容其实都写注释里了,大部分人应该都能看懂。 1、结构   setmultiset会根据特定的排序原则将元素排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。   只要是assignable、copyable、comparable(根据某个排序准则)的型别T,都...

一位有梦想的OI选手的博客 1099

Teradata Multiset Set Tables – 专家使用指南

本文翻译自DWH PRO Teradata Multiset vs. Set Tables – Usage Guidlines for the Expert In relational data modeling theory, each entity needs a primary key. Each primary key value uniquely identifies an obje...

Lockey23的博客 5196

STL之setmultiset那些事

STL之setmultiset那些事set/multiset以rb_tree为底层结构,因此有元素自动排序特性。排序的依据是key,而set/multiset元素的va...

Francis的博客 481

setmultiset

setMultiset会根据特定的排序规则自动将元素排序,multiset允许元素重复,set不允许元素重复,二者在std中定义如下: namespace std { template <class T, class Compare = less, class Allocator = allocator> class set ; template <clas

1026

map setmultiset multimap 的介绍

mapsetmultisetmultimap 的介绍及操作详解

2301_77509762的博客 1407

【STL——setmultiset容器】

STL——setmultiset容器

努力搬砖ing~ 480

C++set/map multiset/multimap

C++中,map是一种关联性容器,用于存储唯一的值。底层用二叉搜索树(红黑树)来实现。用于对数据的有序存储和快速查找。mapset的底层实现几乎一模一样,不同的地方在于,map中存储的是一个键值对pair。pair中有两个成员,分别为T1类型的key,和T2类型的value。在map中,value的值可以改变,key的值不能直接改变。而二叉树中大小比较的规则是按照key的值进行比较的。

Celia的博客 912

C++ set / multiset 主要包括:《set的介绍使用》《multiset的介绍和使用》《setmultiset的区别》

《一》map

dpfxaca6的博客 251

SETMULTISET

正常情况下 #include&lt;bits/stdc++.h&gt; using namespace std; int main() { set&lt;int&gt;S;//不可重复 multiset&lt;int&gt;K;//可重复 int n; if(!S.empty())S.clear();//判空,清空 if(!K.empty())K.cle...

wys5的博客 211
上一篇: 【双端队列 deque】
下一篇: 【bitset】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值