189 8069 5689

c++set用法入门必看超详细-创新互联

1、set的作用
set就是集合的意思,集合的特点就是不会出现重复的内容。一般用来作查重或去重操作,举个场景,给出一个表:

创新互联建站从2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元留坝做网站,已为上家服务,为留坝各地企业和个人服务,联系电话:13518219792
姓名爱好
小明打篮球
小刚画画
小明听音乐
问该表中出现了多少个人,学会了set,就可以很轻松地解决这个问题

2、set的定义
set<储存的类型>容器名
如:
储存int型的值 sets;
储存double型的值 sets;
储存string型的值 sets;
储存结构体或者类的值的值 set<结构体名>s;

(1)set的一些基本的成员函数

//常用函数(必学)
insert()//插入元素
count()//判断容器中是否存在某个元素
size()//返回容器的尺寸,也可以元素的个数
erase()//删除集合中某个元素
clear()//清空集合
empty()//判断是否为空
begin()//返回第一个节点的迭代器
end()//返回最后一个节点加1的迭代器
rbegin()//反向迭代器
rend()//反向迭代器

//功能函数(进阶)
find()//查找某个指定元素的迭代器
lower_bound()//二分查找第一个不小于某个值的元素的迭代器
get_allocator()//返回集合的分配器
swap()//交换两个集合的变量
max_size()//返回集合能容纳元素的大限值

代码:

#include//c++标准头文件,可以使用cout,cin等标准编译用法
#include//使用set需要带上这个文件
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,map,set,vector,queue时都要使用
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	cout<<"现有的元素有"<//遍历set,注意set会将元素自动排序,插入的顺序是1、3、2,遍历的顺序是1、2、3 
		cout<//遍历set,注意set会将元素自动排序,插入的顺序是1、3、2,遍历的顺序是1、2、3 
		cout<

运行结果:

现有的元素有
1 2 3

删除元素3后,现有的元素有
1 2

现在s.size()==2,即有两个元素

是否包含元素2:
s.count(2)==1即包含元素2

是否包含元素3:
s.count(3)==0即不包含元素3

s是否是空的:
s.empty()==0即s不为空

s是否是空的:
s.empty()==1即s是空的

s是否是空的:
s.size()==0即s是空的

3、set的两种遍历方法

(1)迭代器iterator
代码:

#include#includeusing namespace std;
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	set::iterator it;//使用迭代器
	for(it=s.begin();it!=s.end();it++){cout<<*it<<' ';
	} 
}

运行结果:

1 2 3

set有一个很重要的特性,那就是自动升序排序,在很多场景可以方便使用,那么当需要降序排序的时候需要怎样呢?
1、逆向思维
从end()-1到begin()遍历就是降序的了

#include#includeusing namespace std;
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	set::iterator it;//使用迭代器
	for(it=--s.end();it!=--s.begin();it--){cout<<*it<<' ';
	} 
}

运行结果:

3 2 1

2、rbegin()和rend()
逆向迭代器本来就是实现逆向迭代的功能的,下面看用法

#include#includeusing namespace std;
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	set::reverse_iterator it;//使用反向迭代器
	for(it=s.rbegin();it!=s.rend();it++){cout<<*it<<' ';
	} 
}

运行结果:

3 2 1

(2)foreach遍历

#include#includeusing namespace std;
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	for(auto it:s){cout<

运行结果:

1 2 3

这种写法简单易记,但是不能实现降序遍历

课外知识
auto用法,c++auto用法强大,当你无法确定变量的类型时,都可以用auto来代替,迭代器iterator很难记住,其实可以用auto来代替:

#include#includeusing namespace std;
int main(){sets;//定义 
	s.insert(1);//插入元素1 
	s.insert(3);//插入元素3
	s.insert(2);//插入元素2
	for(auto it=s.begin();it!=s.end();it++){cout<<*it<<' ';
	} 
}

运行结果:

1 2 3

是不是很简单呢?

刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!!!

文章尚有不足,欢迎大牛们指正

感谢观看,点个赞吧

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:c++set用法入门必看超详细-创新互联
链接URL:http://cdxtjz.cn/article/cdcoce.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。