C++ STL set用法小结

STL常见坑——访问set中最后一个元素 set功能表: 大家都知道set.end()访问最后一个元素,似乎没有任何问题 可是真的是这样吗??? 看个例子: //test #include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(100); ... 阅读详情

STL里面的一个实用的的容器set,可以称之为集合,在里面存放的元素唯一,确定。

set会自动对容器里的元素排序。

所需头文件: #include<set>

set中常用方法:

begin():返回第一个元素的地址.

end():返回最后一个元素的地址.

empty():判断集合是否为空.

clear():清空set中所有元素.

max_size():返回set容器可能包含的元素最大个数.

size():返回当前容器中元素的个数.

count():返回set中某个键值的个数,因为一个键值在set中只能出现一次或0次,也就变成了判断该元素是否出现.

equal_range():返回一对定位器,分别表示第一个大于或等于给定关键值的元素和 第一个大于给定关键值的元素,这个返回值是一个pair类型,如果这一对定位器中哪个返回失败,就会等于end()的值.

erase(it):删除迭代器指针it处元素.

insert():插入某个元素.

代码演示:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <cmath>
#include <stack>
using namespace std;

int main(){
    set<int>s;
    for(int i=1;i<=10;i++) s.insert(i);
    cout<<s.size()<<endl; 
    cout<<s.max_size()<<endl;
    cout<<*s.begin()<<endl;
    cout<<*s.end()<<endl;
    set<int>::iterator it;
    for(it=s.begin();it!=s.end();it++){
		cout<<*it<<' ';
	}
	cout<<endl;
	if (s.count(1)) cout<<"1在set容器里"<<endl;
    pair<set<int>::const_iterator,set<int>::const_iterator> pr;
    pr=s.equal_range(3);
    cout<<"第一个大于等于3的数是:"<<*pr.first<<endl;
    cout<<"第一个大于3的数是"<<*pr.second<<endl;
	set<int>::iterator first;
	set<int>::iterator second;
	s.erase(s.begin());
	first=s.begin();
	second=first;
	second++;second++;
	s.erase(first,second);
	cout<<"删除后set中元素有:"<<endl;
	for(it=s.begin();it!=s.end();it++)
		cout<<*it<<" ";
    cout<<endl;
    return 0;
}
运行截图:


再来补上一个今天用set做的题:

传送门:Aramic script

题目大概意思是:给你n个字符串,每个字符串的根定义为去掉字符串里重复的字符后剩下的字符构成的字符串,不管顺序,问最后有多少个根字符串?

AC代码:

/**********************************************
 *Author*        :coderdz
 *Created Time*  : 2018/5/2 20:42:04
*********************************************/

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <stack>
using namespace std;
#define IO ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define rep(i,n) for(int i=1;i<=n;i++);
#define m(a,b) memset(a,b,sizeof(a))
typedef pair<int, int> PII;
typedef long long LL;
const int MAXN=1e5+10;

inline void OPEN(string s){
    freopen((s + ".in").c_str(), "r", stdin);
    freopen((s + ".out").c_str(), "w", stdout);
}

int main(){
    IO;
    set<string>s;
    s.clear();
    int n;
    cin>>n;
    while(n--){
		set<char>ss;
		set<char>::iterator it;
		ss.clear();
		string t;
		cin>>t;
		for(int i=0;i<t.size();i++) ss.insert(t[i]);
		t="";
		for(it=ss.begin();it!=ss.end();it++) t+=(*it);
		s.insert(t);
	}
	cout<<s.size()<<endl;
    return 0;
}

c++STL容器的Set和multiset set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。 multiset与set的区别:set支持唯一键值,每个元素值只能出现一次;而multiset中同一值可以出现多次。 不可以直接修改set或multiset容器中的元 阅读详情

相关推荐

01|无代码开发 | 如何使用Zion实现导航网站制作

以上就是我制作导航网站的心得,分享给大家,作为一个小白想要独立搭建一个网站还是比较困难的,而在Zion不仅可以用可视化的方法进行搭建,甚至还可以一键发布,不用考虑服务器域名啥的问题,真是太方便了。

2301_76262110的博客 1390

C++中set用法详解

今天和同学偶然谈到了C++的set的特性,不会重复,之前没怎么用过,特来学习学习。 set中常用的方法 begin()    ,返回set容器的第一个元素 end()      ,返回set容器的最后一个元素 clear()    ,删除set容器中的所有的元素 empty()    ,判断set容器是否为空 max_size()   ,返回set容器可能包含的元素...

salmonwilliam的博客 5770

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1104

面向初学者的 STL set 详解,一看就懂!

???? 作者:Linux猿 ???? 简介:优快云博客专家????,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 目录 一、什么是 set ? 二、set 的定义 2.1 头文件 2.2 定义 2.3 常用方法 三、set 方法实例演示 3.1 size()、clear()、empty() 方法 3.2 begin()、end() 方法 3.3 rbegin()、rend() 方法 3.4 lower_bound()、upper_bound() 方法 3.5 e

Muti-Agent 8676

深入解析进化算法中的选择与多样性

在计算科学的世界里,最优雅的解决方案往往源于最古老的智慧——大自然。进化算法(Evolutionary Algorithms, EAs)正是这样一种受达尔文自然选择学说启发的强大工具。它们通过模拟“适者生存”的过程,在庞大的可能性海洋中搜寻最优解。。:指的是深入挖掘和优化已知的优质解。这就像在一片已知的沃土上精耕细作,力求获得最高产量。强大的选择压力会促进这一过程。:指的是在整个搜索空间中寻找全新的、可能更优的解。这好比派遣探险队去发现新大陆,充满了未知与机遇。保持种群的多样性是探索的关键。

weixin_62533513的博客 713

solidworks vba二次开发配合问题

solidworks vba二次开发配合问题二次开发装配的步骤 二次开发装配的步骤 solidworks可以使用宏录制配合过程从而得到配合的vba代码,步骤如下: 1.选择两个配合的面(点、线等) 2. 建立配合 例如将两个圆柱面同心(图中高亮): 配合后 我们看一下宏录制的代码: Sub main() //激活solidworks接口 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc //选择两个圆柱面,注意此处是根据坐标选择,不

Alejandro123的博客 3404

【C++】STL - 集合 set

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

weixin_53235104的博客 2万+

跨应用服务器的自定义 IDoc 传输实战:以 CATSDB 工时为例,打通两套 SAP 系统的数据通道

本文介绍了在企业多SAP系统环境下,使用SAP ALE/IDoc技术实现工时数据跨系统传输的解决方案。文章从技术选型、系统架构到具体配置步骤进行了详细说明,重点阐述了IDoc/ALE在异步传输、全链路追踪和数据重放方面的优势。 文章详细讲解了端到端实施流程,包括Logical System配置、RFC Destination创建、Message Type定义、Segment和Basic Type设计等关键步骤。同时提供了出站封装的ABAP代码示例,强调调用MASTER_IDOC_DISTRIBUTE函数后执

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

STL常用容器—set容器

整理总结C++ STL set容器的概念、创建、基本操作与案例

weixin_46216674的博客 4417

uniapp - 解决App端报错reportJSException >>>> exception function:createInstanceContext, exception:white sc

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniApp报错,reportJSException>>>>exceptionfunction:createInstanceContext,exception:whitescreencausecreateinstanceContextfailed,运行自定义基座时白屏,uniapp项目运行白屏reportJSException,检查没问题依旧报错,第三方库插件,组件,uniapp打包调试

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

极智AI | 详解 ViT 算法实现

大家好,我是极智视界,本文详细介绍一下 ViT 算法的设计与实现,包括代码。

极智视界 5603

c++ hashset的用法_C++ STL中的 Set的用法

1.关于set的概念set 是STL中的集合。集合我们都很熟悉,具有排异性,在这里set中也遵循这条规矩。 而且在set中,存在系统自动排序的操作。2.set的常用函数set 与 vector具有类似的用法#include //set 的头文件set s; //声明一个int型set变量,名为ss.empty() //判定 s 是否为空s.insert(1...

weixin_39557402的博客 345

MATLAB极坐标伪彩色圆图绘制之polarPcolor函数

polarPcolor函数介绍 我们经常在论文或期刊上看到如下图这种以色调冷暖代表数值大小的极坐标圆图, 而function [varargout] = polarPcolor(R,theta,Z,varargin)可以很好的帮助我们快速绘制这类极坐标圆图。它非常适合雷达或激光雷达的平面位置指示器。使用polarPcolor函数时,我们只需根据手中数据构造相应的二维矩阵Z即可,十分便捷。varargin值为绘制模式选择。R值为半径坐标一维矩阵,theta值为角坐标一维矩阵。 代码示例 这里使用了海洋表面耀光

qq_19512613的博客 1万+

C++ STL中map、set概念及使用方法小结

1. 关联容器简介: STL标准模板库(Standard Template Library)是惠普实验室开发的一系列软件的统称。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)、iterator(迭代器)。 容器类可分为:序列式容器(sequence containers)、关联式容器(associative containers)。 序列式容器 包括: vector、list、deque、stack、queue、heap、priority_queue、slist 等

ArtAndLife的博客 1287

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

stl用法小结(更新中)

sort 函数用法 头文件:#include <algorithm> 使用对象: 容器支持的迭代器类型必须为随机访问迭代器。这意味着,sort() 只对 string、array、vector、deque 这 4种容器提供支持。 写法:1.sort(arr, arr + 5) 通过下标排序2.sort(arr.begin(),arr.end()) 通过迭代器排序 排序顺序:默认按照第一个属性升序 定义compare函数可以实现其他形式排序 find函数用法 头文件:#include

qq_55788328的博客 1221

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++中的set函数用法详解

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

qq_46071321的博客 5382

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

c++ hashset的用法_C++中set用法详解

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

weixin_39568781的博客 858

C++STL之 set 和 map:介绍及基本使用

set、map、map中的operator[]、multiset、multimap的使用、前K个高频单词

m0_63207201的博客 1189

C++STL容器总结篇之set

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

秀岩的博客 545

set用法小结

文章目录概念set的定义set容器内元素的访问倒序遍历所有元素set常用函数insert()find()erase()size()clear()lower_bound(key_value)upper_bound(key_value)empty()swap() 概念 是一个内部自动有序且不含重复元素的容器 C++ 11,还有unordered_set,去重但不排序 set的定义 set<typename> name; set<int> name; set<node>

qq_43721152的博客 435

C++STL容器知识点小结

STL标准模板库 STL主要分为分为三类: algorithm(算法) - 对数据进行处理(解决问题) 步骤的有限集合 container(容器) - 用来管理一组数据元素 Iterator (迭代器) - 可遍历STL容器内全部或部分元素”的对象 容器和算法通过迭代器可以进行无缝地连接。在STL中几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 STL 最早源于惠普实验室,早于C++存在,但是C++引入STL概念后,STL就成为C++的

半生瓜のblog 1077

STL set用法小结(交并差补)

常见的方法 略 特点 set和map按照key的字典序维护树,当题目要求按某个量的字典序时,可以插入set/map中,再输出。 set的增删查改都是logn 方法介绍 count max_size() upper_bound() lower_bound() 结构体的set set的合并 set的交并差补 交并差补四个函数的参数相同,常用版本中都是5个参数, set_xxxx(set1...

点典的博客 1065

有序之美:C++ Set的哲学与诗意

在C++的繁华语言世界中,有一个数据结构宛如一位端庄优雅的隐士,它不事张扬,却蕴藏着深邃的智慧与独特的魅力。这便是标准模板库(STL)中的set容器。若将C++比作一幅绚丽的画卷,set则如点缀画卷的灵动笔触,简单而不失精妙。

2303_81060385的博客 2132

C++ STL中set, maltimap等容器的使用小结 - LeetCode 49 题目

引用 大家都知道很多算法题并不是思维逻辑的复杂性,而是数据结构的复杂性。好的、合适的数据结构对解某些题来说具有很好的启发作用,他能很快让你想到题目的最终的解决思路。 对于C++程序员来说,数据结构容器类打包比较好的就是STL了,里面的容器有序列容器(array,vector,deque,list,forward-list);关联式容器(set,multiset,map,multimap);无序...

斯是陋室,惟汝德馨 501

C++ STL set小结

/*set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)set模板原型://Key为元素(键值)类型template , class Alloc=STL_DEFAULT_ALLOCATOR(

4万+
上一篇: 设置gvim/vim透明!
下一篇: Codeforces Round #478 (Div. 2) B. Mancala
_dingzhen
博客等级 码龄9年 120粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值