php的set 容器,stl之set的用法

本文详细介绍了C++ STL中的set容器,包括其数据结构、特性以及常用函数的使用方法,如insert、clear、empty、size等。set容器用于存储唯一元素并自动排序,不允许重复值。此外,还提供了实例演示了如何插入元素、清空容器、检查容器是否为空以及获取容器大小。最后,简要提到了begin()和end()在遍历set时的作用,并提示了遍历循环的注意事项。
摘要由CSDN通过智能技术生成

1 set介绍

(1)set是STL中一个很有用的容器,用来存储同一种数据类型的数据结构(可以称之为K的模型,红黑树的啥东西),基本功能与数组相似。

(2)set与数组不同的是,在set中每个元素的值都是唯一的。

(3)而且set插入数据时,能够根据元素的值自动进行排序。

(4)set中数元素的值并不能直接被改变。

2,简单函数使用。

begin()        ,返回set容器的第一个迭代器

end()      ,返回set容器的最后一个迭代器

clear()          ,删除set容器中的所有的元素

empty()    ,判断set容器是否为空

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

size()      ,返回当前set容器中的元素个数

rbegin     ,返回的值和end()相同

rend()     ,返回的值和rbegin()相同

3,实际操作使用案例

0. 定义一个set容器step1:using namespace std;

step2:直接set成员名

例如:定义一个整型的set容器叫做cc,那么直接set cc就行了

1. insert操作

作用:往你定义的set里面加上一个数。step1:定义一个辅助变量tmp;

step2:输入tmp;

step3:将tmp放进你定义的set容器里面。

例如:往刚定义的cc里面放一个tmp,那么直接:cc.insert(tmp)即可。

2. clear操作

作用:清空你的set容器。step1:将你的set容器清空。

例如:将刚才定义的cc清空,则为:cc.clear()即可。

3. empty判断

作用:判断你的容器是否为空。step1:判断你的容器是否为空。

例如:判断cc是否为空,只需 if(cc.empty())  即可,判断是否非空,只需if (!cc.empty())。

额这块解释一下应该,empty()为空的话应该返回的是1,不为空的话返回0.

我觉得你可以测试下。

4. size询问

作用:询问你的容器里有多少个元素。

例如:询问cc的大小,只需 printf("%d\n",cc.size())即可。

特别的,size返回的是非重复元素,而不是所有元素。

例如:

cc里面有{1 2 3 4 5 6 7 8} 8个元素,那么他的返回值是8;

cc里面有{1 1 1 1 1 1 1 1} 8个元素,那么他的返回值是1;

cc里面有{1 1 1 2 2 6 2 1} 8个元素,那么他的返回值是3。

额,这里面不是不允许有重复值嘛。。。

5. begin,end和对set容器的遍历

这个东西的确有点难……

首先,如果你要对一个set容器进行遍历的话,你要多开两个迭代器,然后以这两个迭代器分别为头和尾遍历。

如果你要对cc进行一次遍历输出,下面是具体操作步骤:

step1:定义两个东西:①set::iterator starti = cc.begin();②set::iterator endi = cc.end();

step2:进行一次遍历:

for (;starti!=endi;starti++)

{

printf("%d\n",*starti);

}

因为begin()和end()返回的都是第一个或者最后一个元素的地址,所以我们在输出的时候就要加个指针*,表示指向该地址存放的元素。

当然,begin()和end()还有其它的用处,具体的就在刷题过程中领悟吧。

重点提示:循环的时候,不能写成starti<=endi,因为这里面没有重载<=的符号,只有!=。

6. max_size询问

询问的是这个set容器的最大存放量。

这东西好像没什么用QAQ……

首先定义一个叫cc的set容器,然后直接询问cc.max_size()就行啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值