C++ STL之set,unordered_set详解

set是一个不允许重复元素的容器,它会自动排序。接口函数包括插入、删除、查找等操作,如insert(),erase(),find()等。可以通过迭代器访问元素,如for循环或auto关键字。还可以自定义比较函数重载<运算符。其他相关容器包括multiset、unordered_set等。
摘要由CSDN通过智能技术生成

set(集合)

简介:

set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。set里面的元素不重复 且有序。

//头文件
#include<set>
//初始化定义
set<int>se;

接口函数

代码含义
s.insert()插入一个元素
s.size()返回当前set容器中的元素个数O(1)
erase(iterator)删除定位器iterator指向的值
erase(first,second)删除定位器first和second之间的值
erase(key_value)删除键值key_value的值
查找
s.find(元素)查找set中的某一元素,有则返回该元素对应的迭代器,无则返回结束迭代器
s.lower_bound(k)返回大于等于k的第一个元素的迭代器
s.upper_bound(k)返回大于k的第一个元素的迭代器
s.empty()判断set容器是否为空
s.begin()返回set容器的第一个元素的地址(迭代器)
s.end()返回set容器的最后一个元素的下一个地址(迭代器)
s.rbegin()返回逆序迭代器,指向容器元素最后一个位置
s.rend()返回逆序迭代器,指向容器第一个元素前面的位置
s.clear()删除set容器中的所有的元素,返回unsigned int类型O(N)

3. 访问

a.迭代器访问

for(set<int>::iterator it=s.begin();it!=s.end();it++)
	cout<<*it<<" ";

b.auto关键字:

for(auto i : s)
	cout<<i<<endl;

c.访问最后一个元素

//第一种
cout<<*s.rbegin()<<endl;

 //第二种
set<int>::iterator iter = s.end();
iter--;
cout<<(*iter)<<endl; //打印2;

//第三种
cout<<*(--s.end())<<endl;

4. 重载<运算符

//重载<运算符
struct cmp {
    bool operator () (const int& u, const int& v) const
    {
       // return + 返回条件
    }
};
set<int, cmp> se;

multiset:元素可以重复,且元素有序
unordered_set :元素无序且只能出现一次
unordered_multiset : 元素无序可以出现多次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值