c++ STL set集合中包含的函数及其应用(一)

C++ STL 集合set 本文主要简述集合的原理和实现,便于快速学习和查阅。 集合的原理 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值。 另外,还得确保根节点左子树的高度与右子树的高度相等,这样,二叉树的高度最小,从而检索速度最快。 ... 阅读详情
  1. set简介:
    set是STL中一种标准关联容器,它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset元素。

  2. set常用函数
    (1)三种形成集合的方法:

#include<iostream>
#include<set>
using namespace std;
void print(multiset<int>& s){
    multiset<int>::iterator it=s.begin();
    while(it!=s.end()){cout<<*it<<" ";it++;}
    cout<<endl;
} 
int main(){
    int a[]={5,3,9,3,7,2,9,3};
    multiset<int>s1;
    //通过构造函数insert()添加集合。 
    for(int i=0;i<sizeof(a)/sizeof(int);i++)s1.insert(a[i]);
    print(s1);
    //通过复制构造函数set(const set& x)创建集合 
    multiset<int>s2(s1);print(s2);
    //通过构造函数set(conset value_type*first,const value_type* last)创建集合
    multiset<int>s3(a,a+sizeof(a)/sizeof(int));print(s3); 
}

输出展示:
这里写图片描述
(2)set常用的函数:

(话不多说直接上代码)

#include<iostream>
#include<set>
using namespace std;
void print(set<int>&s){
    set<int>::iterator it=s.begin();
    while(it!=s.end()){cout<<*it<<" ";it++;}
    cout<<endl;
}
int main(){
    int a[]={3,2,9,4,5};
    set<int>s(a,a+sizeof(a)/sizeof(int));
    //反向遍历 
    set<int>::reverse_iterator it=s.rbegin();
    while(it!=s.rend()){cout<<*it<<" ";it++;}cout<<endl; 
    //判断集合是否为空
    if(s.empty())puts("集合为空");else puts("集合不为空");
    //计算集合的大小
    cout<<s.size()<<endl;
    //一个集合中x值出现的次数
    cout<<s.count(2)<<endl;
    //元素检索
    set<int>::iterator te=s.find(5);
    if(te==s.end())puts("没找到");
    else puts("找到了");
    set<int>::iterator iii=s.lower_bound(3);
    cout<<*iii<<endl;
    set<int>::iterator ttt=s.upper_bound(2);
    cout<<*ttt<<endl;
    //删除元素
    set<int>::iterator itt=s.find(2);
    s.erase(itt); print(s);//删除迭代指针itt处的元素
    s.erase(5);print(s);//删除元素值等于key的元素.

} 

(3)equal_range,pair,count,size用法举例:

#include<iostream>
#include<set>
using namespace std;
int main(){
    int a[]={5,3,9,3,7,2,9,3};
    set<int>myset(a,a+sizeof(a)/sizeof(int));
    multiset<int>mymultiset(a,a+sizeof(a)/sizeof(int));

    pair<set<int>::iterator,set<int>::iterator>s1;
    pair<multiset<int>::iterator,multiset<int>::iterator>s2;

    s1=myset.equal_range(3);
    s2=mymultiset.equal_range(3);

    int ncount=myset.count(3);
    int nMulticount=mymultiset.count(3);

    set<int>::iterator te;
    cout<<"set(搜索值等于3的元素):"<<endl;
    for(te=s1.first;te!=s1.second;te++)cout<<*te<<" ";cout<<endl;
    cout<<"个数是:"<<ncount<<endl;
    cout<<"总个数是:"<<myset.size()<<endl;

    multiset<int>::iterator it;
    cout<<"multiset(搜索值等于3的元素):"<<endl;
    for(it=s2.first;it!=s2.second;it++)cout<<*it<<" ";cout<<endl;
    cout<<"个数是:"<<nMulticount<<endl;
    cout<<"总个数是:"<<mymultiset.size()<<endl;
}

结果展示:
这里写图片描述
未完待续……..

STL-set集合 阅读详情

相关推荐

C++ STL 集合运算

C++ STL 集合运算 定义于头文件&lt;algorithm&gt;的算法: 集合运算的前提是两个集合必须按照同样的规则排序就绪,否则不能进行集合运算! - map,set是有序集合,可以直接参加运算;vector是无序集合,参与运算前必须首先排序. template&lt; class InputIt1, class InputIt2, class OutputIt &gt;...

weixin_42993054的博客 5656

C++中set用法详解

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。 关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一

sh13661847134的博客 2775

【C++21天养成计划】集合——快速上手STL set (multiset) 类(Day16)

小白专属的《C++21天养成计划》,快速入门C++高效教程!

不积跬步,无以至千里! 4363

如何检查元素是否在std :: set中?

How do you check that an element is in a set? 你如何检查元素是否在集合中? Is there a simpler equivalent of the

CHCH998的博客 2477

Arduino-CRSF库详解:嵌入式端CRSF协议解析与ELRS接收机集成

CRSF(Crossfire Serial Protocol)是一种面向FPV无人机的轻量级、高实时性串行通信协议,采用单总线异步传输与8位CRC-8校验机制,广泛应用于遥控链路与遥测交互。其核心在于帧同步(0xC8起始字节)、反相逻辑电平及无重传的广播式设计,对嵌入式平台的UART精度、电平匹配和状态机健壮性提出严苛要求。Arduino-CRSF库正是为资源受限MCU(如ESP32、STM32、ATmega328P)提供零配置、中断安全的协议解析能力,封装了CRC查表计算、超时恢复、多级同步验证等关键机制

weixin_35756690的博客 416

蓝牙耳机充电仓——功能框架

数据传输:大部分充电仓会跟耳机通信,控制耳机开机、关机和进入可搜索模式等等。蓝牙耳机给大家的生活带来便利,来讲讲TWS蓝牙耳机的搭档充电仓吧!方便携带:如果耳机单独带着,指定能弄丢一个,有了充电仓就安全多了。收纳保护:把珍爱的耳机放入充电仓里,防止丢失、磕碰、刮花等。给耳机充电:提供电力补给,让耳机持续使用。

改变自己现在能改变的,珍惜自己现在所拥有的 8948

C++ 集合中查找元素

#include <iostream> #include <set> using namespace std; int main() { set<char> cSet; //利用set对象创建字符类型的集合 cSet.insert('B'); //插入元素 cSet.insert('C'); cSet.insert('D'); cSet.insert('A'); cSet.insert('F'); cout << "old set:" &.

dxm809的博客 2834

基于单片机直流电机调速控制系统设计

*单片机设计介绍,基于单片机直流电机调速控制系统设计。

2201_75940997的博客 2780

C++中集合set的常用操作

介绍C++ 集合set的基本操作。

suiyueruge2019的博客 2302

Qwen3.6-27B本地部署实战:LM Studio配置、硬件门槛与避坑指南

大语言模型本地部署是当前AI工程落地的核心能力之一,其本质是将高参数量模型(如27B级)在受限硬件环境下实现低延迟、高稳定推理。关键技术原理涵盖量化压缩(如GGUF格式与q4_k_m精度权衡)、GPU显存分配策略(KV Cache管理与Offloading机制)、以及运行时环境兼容性(CUDA驱动、llama.cpp后端版本)。该能力直接决定私有化AI应用的技术可行性与成本边界,广泛应用于企业知识库构建、代码辅助、长文档分析等对数据主权和响应确定性要求高的场景。本文聚焦Qwen3.6-27B这一典型27B模

weixin_33272631的博客 467

从硬件异常到代码救赎:RH850内存访问错误(MAE)的深层诊断与艺术

本文深入探讨瑞萨RH850微控制器的内存访问错误(MAE)诊断与解决方法。针对程序跑飞和Flash Driver交互中的潜在陷阱,提供系统性硬件异常分析框架和防御性编程实践,帮助嵌入式开发者从底层机制到代码层面有效预防和修复MAE问题,提升系统稳定性。

pytorch8learner的博客 197

C++ STL-Set的用法

最后输出为count()函数是C++ STL中的内置函数,它。由于set容器仅包含唯一元素,因此。最后输出结果为输出结果为。

2303_77598765的博客 534

51单片机———UART串口通信

传统理解就是信息的传输与交换。单片机与单片机之间,单片机与电脑之间,以及单片机与各式各样的模块之间都可以进行通信。如果没有通信,那么单片机的功能仅仅局限于它本身,它没办法从其他设备获取有用信息,也无法将自己产生的信息告诉其他设备,这样子单片机与外围器件的合作就会收到限制,没办法完成更多的功能,就像一个没办法拓展业务的公司。:实现我们程序当中写的P0=0xFC,就是一次同时对8位进行信号的输出;习惯上,我们还称P0、P1、P2、P3为单片机的4组并行总线:实现低位先发 高位在后。

m0_74225397的博客 3295

【C++】STL - 集合 set

集合(set)是一个内部自动有序且不含重复元素的容器,它可以在需要删除重复元素的情况下大放异彩,节省时间,减少思维量。set 就是关键字的简单集合,当只是想知道一个值是否存在时,set 是最有用的。set 内部采用的是一种非常高效的平衡检索二叉树:红黑树(Red-Black Tree),也称为 RB 树,RB 树的统计性能要好于一般平衡二叉树。在 set 中每个元素的值都唯一,而且系统能根据元素的值自动进行排序,set 中元素的值不能直接被改变。

weixin_53235104的博客 2万+

算法 | A*算法实现最优路径规划

启发式探索是利用问题拥有的启发信息来引导搜索,达到减少探索范围、降低问题复杂度的目的。A*寻路算法是启发式探索的一个典型实践,在寻路搜索的过程中,给每个节点绑定了一个估计值(即启发式),在对节点的遍历过程中采取估计值优先原则,估计值更优的节点会被优先遍历。...

不断学习,不断进步,提高自己 6630

PCL 改进快速欧式聚类【2025最新版】

在FEC: Fast Euclidean Clustering for Point Cloud Segmentation一文的基础上对算法进行改进。博客长期更新,本文最近更新时间为:2025年9月16日。

点云侠的博客 2569

c++ STL 之集合—— set 详解

set是 stl 的一个关联容器,名叫“集合”,何为“集合”?其实就是一个数组,但有了数组何必还需集合?

zhhg0123的博客 2886

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++集合set的用法

众所周知STL是C++中十分实用的容器,set便是其中之一。最近做的题都接触到了set(集合),正好学习了一下,将自己的成果写一写。没有接触过的人也可以看看,表示set非常的好用。 (话说最近好久都没有写过博客了) 定义 首先我们需要一个头文件来使用set #include <set> set的定义类似vector(动态数组): set<int> S1;//定义了一个in...

C20200521的博客 3263

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【C++】STL 容器 - set 集合容器 ⑦ ( 查找元素 - set#find 函数 | 获取元素个数 - set#count 函数 )

一、查找元素 - set#find 函数 1、函数原型 简介 2、代码示例 - set#find 函数 二、获取元素个数 - set#count 函数 1、函数原型 简介 2、代码示例 - set#find 函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 7176

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【c++丨STL】set/multiset的使用

set(集合)和multiset(多重集合)是STL中的容器,分别用于处理唯一元素和允许重复元素的场景,它们的底层结构都是红黑树(一种自平衡二叉搜索树)。set和multiset有以下共同特点:1. 容器元素自动按照升序排列(也可通过传入第二个模板参数调整排序规则)。2. 元素插入、删除、查找的时间复杂度均为O(logN)。set和multiset的核心区别是:set不允许容器内有重复元素,能够达到去重的效果;而multiset支持插入重复元素。鉴于set和multiset的接口功能。

2301_80955819的博客 2119

C++ 集合set 详解

1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让

qq_39450326的博客 3万+

C ++ STL中的set :: find()函数

C ++ STL set :: find()函数 (C++ STL set::find() function) set::find() function is a predefined function, it is used to check whether an element belong to the set or not, if element finds in the set con...

cumubi7552的博客 1万+

C++集合 STL集合 set集和--交集、并集、差集、对称差

STL库中有丰富的集合运算方法,我们可以使用它们快速完成交集、并集、差集、对称差集的运算。(转载请指明出于breaksoftware的csdn博客) 交集(intersection) 交集是集合运算中经常会用到的计算,其表达是两个集合共有的部分(图中红色区域) STL中有set_intersection方法可以实现该功能。它是C++17开始支持的方法,声明于<algorithm>中。其中一种形式是 template< class Executi...

xiaozhidian的博客 8624

【C++ STL哈希容器】unordered_set 无序集合

【C++ STL有序关联容器】set 集合。查看已定义 uset 容器存储元素的个数,并通过正向迭代器输出各元素。int main()//创建一个空的unordered_set容器//给 uset 容器添加数据//查看当前 uset 容器存储元素的个数//遍历输出 uset 容器存储的所有元素iter!

普罗米修斯的博客 1477

【C++】STL 容器 - set 集合容器 ① ( set 集合容器简介 | set 集合容器操作的时间复杂度 | set 集合容器常用操作 )

一、set 集合容器 1、set 集合容器简介 2、set 集合容器操作的时间复杂度 3、set 集合容器常用操作 二、代码示例 - set 集合容器 1、代码示例 2、执行结果

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2850

C++ STL set集合的使用

一些涉及到集合的算法题目,可以考虑使用STL里的set来很方便地解决问题。

青春无问西东 岁月自成芳华 1万+
上一篇: Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) C. The Phone Number
下一篇: poj 3061 Subsequence(二分法)
图南1204
博客等级 码龄9年 21粉丝 118原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值