C/C++ | STL | set

C++中distance函数 std::distance` 函数是C++标准库中的函数,用于计算两个迭代器之间的距离,即迭代器范围的元素个数。`std::distance` 函数返回一个整数,表示从 `first` 到 `last` 之间的距离。`std::distance` 函数的主要功能是计算两个迭代器之间的距离,即迭代器范围的元素个数。这对于确定容器中的元素数量或在特定范围内的位置非常有用。在这个示例中,`std::distance` 函数被用于计算迭代器 `first` 和 `last` 之间的距离,即容器中元素的数量。 阅读详情

C++ Sets

集合(Set)是一种包含已排序对象的关联容器。
map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户在STL使用过程中,并不会感到陌生。
关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。

函数介绍

begin

语法:

iterator begin();

返回指向当前集合中第一个元素的迭代器。

clear

语法:

void clear();

清除当前集合中的所有元素。

count

语法:

size_type count( const key_type &key );

返回当前集合中出现的某个值的元素的数目。

empty

语法:

bool empty();

如果当前集合为空,返回true;否则返回false。

end

语法:

const_iterator end();

返回指向当前集合中最后一个元素的迭代器。

equal_range

语法:

pair equal_range( const key_type &key );

返回集合中与给定值相等的上下限的两个迭代器。

erase

语法:

void erase( iterator i );

void erase( iterator start, iterator end );

size_type erase( const key_type &key );

说明:

● 删除i元素;

● 删除从start开始到end结束的元素;

● 删除等于key值的所有元素(返回被删除的元素的个数)。

find

语法:

iterator find( const key_type &key );

在当前集合中查找等于key值的元素,并返回指向该元素的迭代器;如果没有找到,返回指向集合最后一个元素的迭代器。

get_allocator

语法:

allocator_type get_allocator();

返回当前集合的分配器。

insert

语法:

iterator insert( iterator i, const TYPE &val );

void insert( input_iterator start, input_iterator end );

pair insert( const TYPE &val );

说明:

● 在迭代器i前插入val;

● 将迭代器start开始到end结束返回内的元素插入到集合中;

● 在当前集合中插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。

(应该注意的是在集合(Sets)中不能插入两个相同的元素。)

lower_bound

语法:

iterator lower_bound( const key_type &key );

返回一个指向大于或者等于key值的第一个元素的迭代器。

key_comp

语法:

key_compare key_comp();

返回一个用于元素间值比较的函数对象。

max_size

语法:

size_type max_size();

返回当前集合能容纳元素的最大限值。

rbegin

语法:

reverse_iterator rbegin();

返回指向当前集合中最后一个元素的反向迭代器。

rend

语法:

reverse_iterator rend();

返回指向集合中第一个元素的反向迭代器。

size

语法:

size_type size();

返回当前集合中元素的数目。

swap

语法:

void swap( set &object );

交换当前集合和object集合中的元素。

upper_bound

语法:

iterator upper_bound( const key_type &key );

在当前集合中返回一个指向大于Key值的元素的迭代器。

value_comp

语法:

value_compare value_comp();

返回一个用于比较元素间的值的函数对象。

示例

#include<set>    
#include<iostream>    
using namespace std;
int main()
{
    set<int>s;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        s.insert (x);
    }
    set<int>::iterator it;
    for(it=s.begin ();it!=s.end ();it++)
    {
        printf("%d\n",*it); 
    }
    
    //s.end()没有值
     cout<<"s.begain()   "<<*s.begin ()<<endl;
    //lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    cout<<"lower_buond  3  "<<*s.lower_bound (3)<<endl;
    
    //upper_bound()--返回大于某个值元素的迭代器
    cout<<"upper_bound  3  "<<*s.upper_bound (3)<<endl;

    //find()--返回一个指向被查找到元素的迭代器
    cout<<"find()  3   "<<*s.find (3)<<endl;

    cout<<"s.size()  "<<s.size ()<<endl;
    return 0;
}

输出

1 2 3 4 5 6 7 8 9
2
s.begain()   2
lower_buond  3  1
upper_bound  3  1
find()  3   1
s.size()  1

--------------------------------
Process exited after 4.803 seconds with return value 0
请按任意键继续. . .
C/C++知识要点2——STL中Vector、Map、Set容器的实现原理 1、Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。 注意:vector动态增加大小时,并不是在原空间之后持续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然 阅读详情

相关推荐

「C/C++」C++ STL容器库 之 std::unordered_set 高效的无序集合

是C++标准库中一个非常有用的容器,它提供了高效的方式来存储唯一元素。虽然它有一些潜在的缺点(如哈希冲突和内存使用),但在大多数情况下,它的性能优势使得它成为处理大量数据时的首选容器。在使用时,需要注意哈希函数和比较函数的正确设计,以确保容器的正确性和性能。何曾参静谧的博客。

何曾参静谧的博客 970

C++ STL distance()函数(深入了解,一文学会)

我们知道,作用于同一容器的 2 个同类型迭代器可以有效指定一个区间范围。在此基础上,如果想获取该指定范围内包含元素的个数,就可以借助distance()函数。 distance() 函数用于计算两个迭代器表示的范围内包含元素的个数,其语法格式如下: template<class InputIterator> typename iterator_traits<InputIterator>::difference_type distance (InputIte...

断点 2262

技术文档的语言表达:简洁、准确与易懂的平衡艺术

技术文档的语言表达不仅要简洁、准确,还需要能够打破技术壁垒,使不同背景的读者都能理解。这是一项需要技巧和经验的工作,它要求技术作者既要具备扎实的专业知识,又要具备清晰的表达能力。通过不断打磨语言的简洁性、准确性和易懂性,我们能够创造出一份高质量的技术文档,让知识的传递不再受限于语言的障碍。

人心有反复,好在山水有重逢。 4677

详解c++---set的介绍

set容器的介绍

qq_68695298的博客 1万+

TensorFlow_PyTorch实战:构建AI人工智能回归模型

回归分析是机器学习的核心任务之一,用于预测连续型目标变量(如房价、股票价格、用户留存时间等)。基础线性回归模型的数学原理与代码实现多项式回归模型的过拟合处理与正则化技巧自定义数据集加载与数据预处理流程动态图(PyTorch)与静态图(TensorFlow)的编程范式对比模型评估指标与可视化分析方法核心概念:对比两大框架的架构设计,解析回归模型核心组件数学原理:推导线性回归的假设函数、损失函数及优化算法算法实现:提供TensorFlow和PyTorch的完整代码示例项目实战。

AI天才研究院 1429

Visual Studio Installer下载失败的5种修复方法(含DNS修改/补丁安装)

本文针对Visual Studio Installer下载安装文件失败的问题,提供了从网络层到系统层的深度排查与修复指南。详细介绍了DNS修改、代理配置、防火墙设置、系统服务检查等5种核心修复方法,并包含离线安装与手动补丁等替代方案,帮助开发者彻底解决安装难题。

sprite的博客 1614

c++ set用法 入门必看 超详细

1、set的作用 set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作,举个场景,给出一个表: 姓名 爱好 小明 打篮球 小刚 画画 小明 听音乐 问该表中出现了多少个人,学会了set,就可以很轻松地解决这个问题 2、set的定义 set<储存的类型> 容器名 如: 储存int型的值 set<int> s; 储存double型的值 set<double> s; 储存string型的值 set<string&gt

weixin_52115456的博客 5万+

MacOS多次踩坑后成功安装Homebrew

来一次性成功安装Homebrew吧 官网提供的安装脚本无法成功安装Homebrew,原因大家都懂的,故采用脚本安装的方式。 下载homebrew的安装脚本brew_install 在Download路径下执行如下脚本 curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install 修改brew_install脚本 修改brew_install脚本。如果你的脚本打开之后是如下

weixin_41847116的博客 1981

set详讲(C++)

set是STL中的容器之一,不同于普通容器,它的查找速度极快,常用来存储各种经常被检索的数据,因为容器的底层是平衡二叉搜索树中的红黑树。除此之外,还可以借助其特殊的性质,解决部分难题。

weixin_47271425的博客 7521

【CSP-S 提高组】考试大纲集合

【CSP-S提高组】考试大纲集合

weixin_42596089的博客 7254

【win10】win 10 电脑喇叭音频显示红叉的处理方法

目录 一、报错情况 二、“音频服务未运行”解决方法 三、“未插入扬声器或耳机”解决方法 一、报错情况 (1)当电脑的扬声器喇叭图标上带有红X符号,提示“音频服务未运行”时: (2)小喇叭上面有红叉,显示“未插入扬声器或耳机”时: 二、“音频服务未运行”解决方法 (1)开始菜单搜索“服务”: (2)没有启动的点击“启动”,已启动的点击“重新启动”: (3)继续,右...

顾三殇 —— 博客空间(软件测试) 17万+

【C/C++】 STL set 详解

关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树即红黑树,也称为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。

这里是阿安的博客 682

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

目录一、前言:YOLO26原生损失函数在小目标检测中的核心痛点(涨点瓶颈)1.1 小目标权重不足,聚焦能力薄弱1.2 样本分布不平衡适配性差,正负样本权重失衡1.3 训练不稳定,易出现梯度消失/震荡1.4 未区分小目标与背景的冗余干扰,误检率高二、TGRS 2025顶刊灵感解析:自适应聚焦损失的核心逻辑三、全网独家创新:AdaFocalLoss损失函数设计与YOLO26适配(核心重点,可复现)3.1 AdaFocalLoss函数整体设计(独家设计,清晰可复现)3.2 各核心模块详细设计(独家创新,可直接复现

qq_36130719的博客 202

C/C++ STL set , map , vector 基础应用

首先是对STL的介绍 STL是Standard Template Library的简称,中文名标准模板库 在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<array>、<vector>、&l...

ZangWhe 183

ComfyUI整合包、秋叶ComfyUI、Florence节点报错下载并加载Florence2模型No module named ‘timm.layers‘、ComfyUI报错解决

步骤操作1打开2地址栏输入cmd并回车3输入命令:4安装完成后重新打开 ComfyUI,执行工作流,即可解决报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1240

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C/C++语言基础--C++STL库之容器入门(array、vector、string、deque、list、forward_list、stack、queue、prority_queue、set)等

list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。multiset与set的区别:set支持唯一键值,每个元素值只能出现一次;

羊小猪~~的博客 1164

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C/C++编程:STL set、map、multiset、multimap源码学习

概述 set的特性是:所有元素都会根据元素的key自动被排序。 set的元素不像map那样可以同时拥有value和key,set元素的value就是value,value就是key。 set不允许两个元素有相同的键值 我们可以通过set的迭代器改变set的value吗? 不行,因为set的value就是其key,关系到set元素的排列规则。如果任意改变set元素值,会严重破坏set组织 因此,set<T>::iterator被定义为底层RB-tree的const_iterator,拒绝写入

OceanStar的博客 541

VB摄像头监控

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【C/C++入门攻略】C++标准模板库(STL)用法介绍:set

C++标准模板库(STL)用法介绍:set set:集合,STL容器之一,可以理解成一个内部自动有序且不含重复元素的容器。 使用set前需要添加: #include <set> using namespace std; set声明 set是一个模板类,所以使用前需要声明。 定义 set<typename> name; typename可以是任何基本类型,也可以是STL标准容器 二维 两个维都是容器 set<set<typename> > name;

一只小杰鸽的博客 995

C/C++ STL提供的关联式容器之set

C/C++ STL提供的关联式容器之set

wendyWJGU的博客 565

[C/C++]详解STL容器8-map、multimap、set、multiset的介绍和使用

本文介绍了map、multimap、set、multiset以及使用方法。

RMA515T的博客 4738

C/C++编程:STL之关联式容器set/multisets、maps/multimaps

1、set/multisets 内部的元素依据其值自动排序 set内的相同数值的元素只能出现一次,multisets内可包含多个数值相同的元素 内部由二叉树实现,便于查找 #include &lt;iostream&gt; #include &lt;set&gt; using namespace std; void main() { set&lt;int&gt;coll; coll....

OceanStar的博客 955

「C/C++」C++ STL容器库 之 std::set 唯一键的集合容器

std::set是一个功能强大的关联容器,它提供了自动排序和元素唯一的特性。然而,由于红黑树的实现,其内存开销相对较大,且不支持随机访问。std::set去重和排序:将一组数据去重并排序。元素查找:在大量数据中快速查找某个元素是否存在。集合运算:如并集、交集、差集等集合运算(可以使用STL中的算法如等)。需要保持元素有序性的场景:如任务调度、资源管理等。通过合理使用std::set容器,可以显著提高程序的效率和可靠性,特别是在需要处理唯一性和排序性的场景中。

何曾参静谧的博客 1030

[C/C++]详解STL容器9-基于红黑树模拟实现map和set

本文基于红黑树模拟实现map和set,首先对之前模拟实现的红黑树做了一些改造,之后对map和set做了模拟实现。

RMA515T的博客 1万+

C/C++ 单词统计 STL(map、set)

题目描述 输入n组单词,统计不同单词出现的个数,并按照字典顺序输出。(n<1000,每个单词长度小于1000) 样例输入 4 aab aab aa bc 样例输出 aa 1 aab 2 bc 1 #include <iostream> #include <string> #include <set> #include <map> using namespace std; struct Word{ int times; string wd; }; s

零零年代的风的博客 588

C/Cpp / STL / map 和 set 的不同点和相同点。

1、节点类型 (1)map,节点保存的内容是 key 和 value 。 (2)set,节点保存的是 key。当然,理解成 value 亦可。这里说 key,是因为代码中写的是 key 。 2、其他 (1)set,集合。包含了经过排序了的数据,这些数据的值 (value)必须是唯一的(因为红黑树需要按照 value 进行判断大小)。 (2)map,映射,即:从 key 到 value 的映...

布袋和尚 597

C/C++ STL提供的关联式容器之unordered_set

C/C++ STL提供的关联式容器之unordered_set

wendyWJGU的博客 689
上一篇: 欢迎使用优快云-markdown编辑器 | 优快云-Markdown自带的说明文档 | Markdown说明文档
下一篇: 北邮机试 | 牛客网 | 比较奇偶数个数 | 判断奇偶
stone_fall
博客等级 码龄9年 230粉丝 256原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值