set容器介绍
set容器中的元素不会重复,当插入集合中已有的元素时,并不会插入进去,而且set容器里的元素自动从小到大排序。
即:set里面的元素不重复 且有序
//头文件
#include<set>
//初始化定义
set<int>se;
代码 | 含义 |
---|---|
s.begin() | 返回set容器的第一个元素的地址(迭代器) |
s.end() | 返回set容器的最后一个元素的地址(迭代器) |
s.rbegin() | 返回逆序迭代器,指向容器元素最后一个位置 |
s.rend() | 返回逆序迭代器,指向容器第一个元素前面的位置 |
s.clear() | 删除set容器中的所有的元素,返回unsigned int类型O(N) |
s.empty() | 判断set容器是否为空 |
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的第一个元素的迭代器 |
(1)迭代器访问
for(set<int>::iterator it=s.begin();it!=s.end();it++)
cout<<*it<<" ";
(2)简便的方法
for(auto i : s)
cout<<i<<endl;
(3)访问最后一个元素
//第一种
cout<<*s.rbegin()<<endl;
//第二种
set<int>::iterator iter = s.end();
iter--;
cout<<(*iter)<<endl; //打印2;
//第三种
cout<<*(--s.end())<<endl;
//重载<运算符
struct cmp {
bool operator () (const int& u, const int& v) const
{
// return + 返回条件
}
};
set<int, cmp> se;
multiset:元素可以重复,且元素有序
unordered_set :元素无序且只能出现一次
unordered_multiset : 元素无序可以出现多次
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App