set容器介绍

\(\color{orange}{1.介绍}\)

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

即:set里面的元素不重复 且有序

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

\(\color{orange}{2.函数方法}\)

代码 含义
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的第一个元素的迭代器

\(\color{orange}{3.访问}\)

(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;

\(\color{orange}{4.重载<运算符}\)

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

\(\color{orange}{5.其他的set}\)

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

posted @ 2022-05-11 17:29  飘向远方丶  阅读(94)  评论(0)    收藏  举报