STL - set(multiset)

头文件
#include < set >
简介
  1. 在set中每个元素的值都是唯一的。multiset是可重复集合
  2. 两者系统能够根据元素的值自动进行排序(从大到小)
  3. set用于判断一个集合内元素的有无
  4. 两者的内部实现是一棵红黑树,它们支持的函数基本相同
用法

1.定义及创建

set<int> a // 定义一 类型为int(可以改成其他的类型)
multiset<int> a // 定义一 类型为int(可以改成其他的类型)
// example
struct node{
    ......;
};
set<node>s;
bool operator <(const node &ai,const node &bi)
{
    return ai.x>bi.x;
}

//迭代器
set<int>::iterator it;
multiset<int>::iterator it;
2.具体操作
语法 (适用于 set 和 multiset)
s.begin()        返回set容器的第一个元素
s.end()        返回set容器的最后一个元素
s.clear()          删除set容器中的所有的元素 
s.empty()    判断set容器是否为空
s.max_size()   返回set容器可能包含的元素最大个数 
s.size()      返回当前set容器中的元素个数 
s.rbegin     返回的值和end()相同
s.rend()     返回的值和begin()相同
s.coust(x)       用来查找set中x出现的次数
s.find()       返回给定值值得定位器,如果没找到则返回end()
s.insert(x)        将x插入到set中
s.lower_bound(x) ,返回第一个大于等于x的定位器
s.upper_bound(x)  ,返回最后一个大于等于x的定位器
s.erase(x)    删除x
例子
set<int> s;                            //定义set
multiset<int> ss                       //定义multiset
set<int>::iterator it;                 //定义一个set迭代器
multiset<int>::iterator itt;           //定义一个multiset迭代器

s.insert(2);
s.insert(2);
s.insert(4);
s.insert(6);
s.insert(8);
s.insert(5);

ss.insert(2);
ss.insert(2);
ss.insert(4);
ss.insert(6);
ss.insert(8);
ss.insert(5);


for(it=s.begin(); it!=s.end(); it++)     //输出迭代器的值  2 4 5 6 8
	cout<<*it<<" ";
for(itt=ss.begin(); itt!=ss.end(); itt++)     //输出迭代器的值  2 2 4 5 6 8
	cout<<*itt<<" ";

cout<<s.size()<<endl;    //输出元素个数  5
cout<<ss.size()<<endl;   //输出元素个数  6

s.erase(2);         //删除元素2
for(it=s.begin(); it!=s.end(); it++)     //输出迭代器的值   4 5 6 8
	cout<<*it<<" ";
ss.erase(2);
for(itt=ss.begin(); itt!=ss.end(); itt++)   //输出迭代器的值   4 5 6 8
	cout<<*itt<<" ";

it=s.find(4);
cout<<*it;     //输出元素  4    
it=s.find(3)
cout<<*it;     //输出元素  s.end()  5  因为不存在3
// multiset 同样适用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值