【C++ STL】Set用法

C++中set使用及介绍(超详细+入门+代码解析) C+帮助文档:链接:Set的文档介绍set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。 阅读详情

本文为本蒟蒻仅会的Set用法,求大神指教

Set,C++中的集合函数,采用红黑平衡树维护
multiset跟set差不多,但允许一个值出现多次

注意:以下代入的地址begin,end均为左闭右开区间
注意:以下代入的地址begin,end均为左闭右开区间
注意:以下代入的地址begin,end均为左闭右开区间

定义:

set<类型> 变量
可以套用,如:map<int,set<int> >a (注意有空格)
当然也可以:set<int> a(cmd)

常见用法:

a.begin():返回a的所有值中最小值的地址
*a.begin():返回a的所有值中最小的值
a.end():返回a的所有值中最大值后面的地址(左闭右开)
a.count(k):k这个数在集合a中出现了多少次(如果a不是multiset,返回值为0/1)
a.empty():是否为空(等价于a.begin()==a.end())
a.size():返回元素个数(a.count(x)之和)
a.find(k):返回a中k这个元素的地址(没找到返回end())
a.equal_range(k):返回为一个pair,first是a中第一个大于等于k的数,second是第一个大于k的数
a.lower_bound(k):跟int的一样用法
a.upper_bound(k):跟int的一样用法

a.clear():删除所有元素
a.insert(k):把k这个数插入到a中
a.erase(k):把k这个数从a中删除(k可以为地址)
a.erase(first,last):把a中地址first到last的元素全部删掉(不会判地址错误)
a.swap(b):把集合a与集合b交换

以上操作复杂度均为log(常数+++),除了insert(begin,end)和erase(begin,end)是O(n)的

详细用法演示

以下部分来源于这里,当然也有内容来自于网上各大博主的blog,在此表示感谢

以下程序中的n表示集合中数的个数,m为询问个数,
运行均在JZOJ的评测机上

equal_range(k)

返回值为pair,first是a中第一个大于等于k的数,second是第一个大于k的数。

#include <cstdio>
#include <cstdlib>
#include <set>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
int n;
set<int> a;
int main()
{
    int q;
    scanf("%d",&n);
    fo(i,1,n)scanf("%d",&q),a.insert(q);
    printf("-------------\n");
    pair<set<int>::const_iterator,set<int>::const_iterator> ans;
    ans=a.equal_range(3);
    printf("%d\n",*ans.first);
    printf("%d\n",*ans.second);
    return 0;
}

运行结果:

5
1 2 3 4 5
-------------
3
4
请按任意键继续. . .

lower_bound(k)和upper_bound(k)

跟普通的一样意思,返回的是地址

#include <cstdio>
#include <cstdlib>
#include <set>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
int n;
set<int> a;
int main()
{
    int q;
    scanf("%d",&n);
    fo(i,1,n)scanf("%d",&q),a.insert(q);
    printf("------------\n");
    printf("%d\n",*a.lower_bound(3));
    printf("%d\n",*a.upper_bound(3));
    return 0;
}

运行结果

10
1 1 2 2 3 3 4 4 5 5
------------
3
4
请按任意键继续. . .

insert(k)

有2种用法:
a.insert(begin,end):把地址begin~end的全部插入到a中
a.insert(k):把a插入集合a中,返回值为pair<set<int>::iterator,bool>,bool表示插入是否成功(a中是否有这个数),地址则为插入位置,而如果时multiset的话,返回值就只有set<int>::iterator(总是会成功)

C++STL中list, vector, map, set用法与区别 List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。 Vector与list Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。 List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要... 阅读详情

相关推荐

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3408

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

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

weixin_52115456的博客 5万+

STM32 FDCAN热插拔恢复机制与自动重发功能优化

本文深入分析了STM32 FDCAN在热插拔场景下触发bus-off状态导致通讯中断的根本原因,指出自动重发功能是问题关键。通过禁用自动重发、配置硬件自动恢复机制及优化总线参数,实现了FDCAN热插拔后的100%稳定恢复,为工业应用提供了可靠的CAN总线解决方案。

ice55的博客 686

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

set容器的介绍

qq_68695298的博客 1万+

LRTimelapse Pro v7.0.0 激活版下载安装教程 (延迟摄影后期渲染)

LRTimelapse Pro 是一款优秀的高级延时摄影解决方案,使用将为用户提供最全面的工具和功能,从导入和组织您的延时摄影序列、视觉工作流程、在 LRTimelapse 中直接编辑和渲染、视觉去闪烁等等,功能齐全,可以使用 LRTimelapse Pro 编辑多个序列时显著提高您的效率,轻松在 LRTimelapse 中配置和使用色彩管理,进行长期延时编辑,在 LRTimelapse Pro 中使用长期工作流程。为延时编辑、关键帧、分级和渲染提供最全面的解决方案。

wyqshusan的博客 3467

量化风控核心:信用评分卡模型的设计与迭代全流程

◦ 动态策略适配:根据评分卡结果动态调整风控流程——高分用户(>750分)秒级放款,中低分用户(600-700分)触发补充资料提交,低分用户(<600分)直接拒绝。◦ 特征有效性监控:每月计算特征IV值,对IV<0.1的低效特征(如“用户星座”)进行淘汰,同时引入新特征(如电商消费数据)。某城商行通过增量学习,评分卡PSI值长期稳定在0.1以下。◦ 数据筛选:整合征信数据(逾期记录、查询次数)、行为数据(消费频次、还款习惯),某银行评分卡纳入150+维度特征,覆盖用户偿债能力、意愿、稳定性等维度;

2501_91651383的博客 1483

set详讲(C++)

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

weixin_47271425的博客 7523

Supervisor 安装与使用

一、Supervisor 介绍 Supervisor 是一个用 Python 编写的进程管理工具,它可以用于监控和控制类 UNIX 操作系统上的多个进程。它是一个客户端/服务器系统,其中 Supervisor 的服务器端称为 supervisord,负责启动管理的子进程、响应客户端命令、重启崩溃或退出的子进程、记录子进程的 stdout 和 stderr 输出,以及处理子进程生命周期中的事件。客...

疯子丶pony的博客 3864

深入浅出C++ ——set类深度剖析

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

weixin_55051736的博客 6713

基于RK3568的YOLOv11模型端侧推理优化与部署实战指南

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

m0_64661770的博客 115

Vue3 - 完美解决 vite 打包后在本地浏览器直接打开运行,build 打包后双击 index.html 直接以 file 协议运行网站(资源、接口等正常访问,和部署到服务器运行效果一样)

vue3vite怎么支持file协议本地打开,vite打包文件如何支持files协议,支持双击即可打开网页,vue3vite打包后双击本地运行,vue3vite打包后怎么直接在浏览器双击打开访问,vite打包后显示空白,vite如何支持本地file协议打开,vue3vite打包后如何本地查看网站,vue3vite项目打包后本地启动白屏怎么办,vite打包后的代码如何在本地运行,vite+vue3打包在fIle本地index.html打开项目,打包后如何直接打开index.html文件,vue3

🏆 前端领域优质创作者 1万+

【c++】【STL】set的常用用法

set<int> s;可以使用greater<>使set 以降序方式存储。(默认为升序)可以通过传入仿函数或 Lambda 表达式自定义排序规则。操作set 复杂度解释插入O(log n)基于红黑树的平衡插入删除O(log n)通过旋转和调整保持平衡查找O(log n)二叉搜索树的搜索。

m0_64014551的博客 2029

矩阵奇异值分解算法(SVD)的导数 / 灵敏度分析

设矩阵X∈Rm×nX∈Rm×nXUΣV⊤XUΣV⊤U∈Rm×mU∈Rm×m为左奇异向量矩阵;V∈Rn×nV∈Rn×n为右奇异向量矩阵;Σdiag⁡σ1σ2σrΣdiagσ1​σ2​σr​为奇异值对角阵(rrank⁡XrrankX我们关心:当XXX发生微小扰动dXdX时,UΣVUΣV如何变化?dXdUΣV⊤dX。

qq_36812406的博客 1751

C++中STL模板中set的用法总结

作者的身份是一名普通的大一计科学生,对于cpp的理解浅薄,还请批评指出。可能这篇文章更适用于初高中的oier~重在如何使用而非严谨的底层原理set正式名字叫做关联容器,它的关联性在于它内部是用红黑树对所有元素排序的Stop!set是默认按升序顺序排序好的一般来说树结构存在形式,其中key用于排序,value为其值,只是在set中value与key值是一样的,但它仍然属于关联容器。

weixin_43720735的博客 895

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

c++ hashset的用法_c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

c++ stl集合set介绍c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数3) ...

weixin_30220465的博客 1450

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++ STL容器 —— set/multiset 用法详解

C++ STL容器 —— set/multiset 用法详解 写在前面:近期正在学习C++的STL容器,因此在这里做一下日志记录,主要介绍一些容器基本成员函数的用法, 配上实际用例,并不涉及原理。但别人的博客终究是别人的, 最好自己上手操作一下. 写的不好, 请大神手下留情. 下面说的 “运行之后” 表示: 运行上个语句之后的结果. 一行如果说的太长的话, 就得拖动下面的进度条才能看到后面的内...

Ember_Sky 1223

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++ STL set用法详解

和lower_bound()很像,但是upper_bound是返回第一个>x的迭代器,不存在则返回end()count(x) 可以返回set中x元素出现的次数,由于set自动去重,所以只返回(0/1)也可以这么理解:find(x) 找到了返回x的迭代器,找不到返回数组元素个数迭代器。注:insert有很多种形式,由于博主太菜,不会,就分享这一种。find(x) 如果找到了,返回迭代器,找不到返回s.end()这个比size还简单,如果set非空,那么返回0,否则返回1。创建一个int型,名称是s的set。

ltl1的博客 2545

C++ STL中set的一些用法

 C++ STL中set的一些用法 #include #include #includeusing namespace std;int main(){int i;char b[10];for( i = 0; i seta(b,b+10);set::iterator p;for( p = a.begin(); p != a.end(); p++ ){   cout }co

1102

c++ stl set容器常用用法

et是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric_difference) 等一些集合上的操作,如果需要集合中的元素允许重复那么可以使用multiset。

shuaizhijun的博客 2万+

c++STL set简单用法

c++STL set简单用法set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。即:set里面的元素不重复 且有序常见方法代码 含义s . begin() 返回set容器的第一个元素的地址(迭代器)s . end() 返回set容器的最后一个元素的下一个地址(迭代器)s . rbegin() 返回逆序迭代器,指向容器元素最后一个位置s . rend() 返回逆序迭代器,指向容器第一个元素前面的位置。

weixin_45063703的博客 363

C++ STL set容器常用用法

set是STL中一种标准关联容器。它底层使用平衡的搜索树——红黑树实现,插入删除操作时仅仅需要指针操作节点即可完成,不涉及到内存移动和拷贝,所以效率比较高。set,顾名思义是“集合”的意思,在set中元素都是唯一的,而且默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差(set_symmetric

CerberuX's Life 3万+

ACM cpp stl set 用法

stl set//集合,元素唯一不可重复 使用平衡的搜索树——红黑树实现 因此插入、删除和查找数据时间复杂度为O(logN) //定义 set s1; //扫描整一个set所有的元素,用迭代器 for (set::iterator i=s1.begin(); i!=s1.end(); i++)      cout //元素插入: //1,(常用)insert,插入

nickwong & nickwang 2093

C++ STL之set用法总结

一、set的特点 关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为...

happend的博客 1344

C++ STL Set常用用法详解

6.2 set的常见用法详解 ​ 是一个内部自动有序且不含重复元素的容器。 要使用set,需要加头文件#include 1. set的定义 ​ set<typenname> name; ​ 其中typename可以是任何基本类型,例如int、double、char、结构体等,也可以是STL标准容器,例如vector、set、queue等 2.set容器内元素的访问 ​ set<typename>::iterator it; ​ 注:set只能通过迭代器访问。且除vector

小李的博客 527

C++ STL set 完全指南:从基础用法到实战技巧

本文全面介绍了C++ STL中的set容器,重点讲解了其自动排序、元素唯一等核心特性及底层红黑树实现。通过代码示例详细演示了set的初始化、插入、查找、删除等基础操作,并对比了multiset允许重复元素的特点。文章还展示了set在解决环形链表检测和数组交集问题中的实战应用,体现了set在数据去重和有序处理方面的优势。掌握set的使用能有效提升"去重+排序"场景的开发效率和代码可读性。

心向往之,行必能至 1211

【C++STL】set,multiset用法详解

std::set 是 C++ 标准模板库(STL)中的一种有序关联容器。它存储的元素都是唯一的,并且容器会按照元素的值自动进行排序。你可以把它想象成一个数学意义上的集合——每个元素只能出现一次,并且内部是天然有序的。核心特点所有元素在容器中总是按键(即元素本身)的升序排列。排序规则默认使用,即运算符,你也可以通过模板参数指定自定义的比较函数(例如实现降序)。容器中。判断相等的标准是比较结果不为true(即),等价于“等价”而非“相同地址”。插入重复元素时,插入操作会被忽略。

2301_80224556的博客 965
上一篇: 【GDOI 2017】【JZOJ 1502】小学生语文题
下一篇: 【C++ STL】queue和priority_queue
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值