set跟vector差不多,它跟vector的唯一区别就是,set里面的元素是有序的且唯一的,只要你往set里添加元素,它就会自动排序(升序),而且,如果你添加的元素set里面本来就存在,那么这次添加操作就不执行。要想用set先加个头文件set。
set的各成员函数列表如下:
c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器
c++ stl容器set成员函数:clear()--清除所有元素
c++ stl容器set成员函数:count()--返回某个值元素的个数
c++ stl容器set成员函数:empty()--如果集合为空,返回true
c++ stl容器set成员函数:end()--返回指向最后一个元素的迭代器
c++ stl容器set成员函数:equal_range()--返回集合中与给定值相等的上下限的两个迭代器
c++ stl容器set成员函数:erase()--删除集合中的元素
c++ stl容器set成员函数:find()--返回一个指向被查找到元素的迭代器
c++ stl容器set成员函数:get_allocator()--返回集合的分配器
c++ stl容器set成员函数:insert()--在集合中插入元素
c++ stl容器set成员函数:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
c++ stl容器set成员函数:key_comp()--返回一个用于元素间值比较的函数
c++ stl容器set成员函数:max_size()--返回集合能容纳的元素的最大限值
c++ stl容器set成员函数:rbegin()--返回指向集合中最后一个元素的反向迭代器
c++ stl容器set成员函数:rend()--返回指向集合中第一个元素的反向迭代器
c++ stl容器set成员函数:size()--集合中元素的数目
c++ stl容器set成员函数:swap()--交换两个集合变量
c++ stl容器set成员函数:upper_bound()--返回大于某个值元素的迭代器
c++ stl容器set成员函数:value_comp()--返回一个用于比较元素间的值的函数
--------------------------------------------------------------------------------------------------------------------------------
举个例子:
在set{3,5,7,8,13,16}中,
对于在set中存在的元素,比如8,
s.lower_bound(8)返回8所在位置的迭代器。
s.upper_bound(8)返回13所在位置的迭代器。
对于在set中不存在的元素,比如12,
两个函数返回的则都是13所在位置的迭代器。
特殊地,
对于比set中最大的元素大的元素,比如20,
两个函数返回的都是s.end()。
--------------------------------------------------------------------------------------------------------------------------------------------
set默认的比较规则先按照first比较,如果first相同,再按照second 比较。 注意:定义的时候右边的两个>>要空一格。
--------------------------------------------------------------------------------------------------------------------------------------------
#include
#include
using namespace std;
int main() {
set s1;
//添加
s1.insert(3);
s1.insert(3);//集合里已经有了,所以不会添加
s1.insert(5);
s1.insert(7);
s1.insert(9);
s1.insert(0);
s1.insert(12);
s1.insert(16);
//删除
s1.erase(3);
//遍历
set::iterator it = s1.begin();
while(it!=s1.end()){
cout<<*it<<" ";
it++;
}
/*
遍历的另一种写法
set::iterator it = s1.begin();
for(;it!=s1.end();it++) {
cout<<*it<<" ";
}
*/
cout<<"\n";
//查找:使用find()函数可以查找元素是否存在
if(s1.find(5)!=s1.end())
cout<<"找到了5"<<"\n";
//使用size()函数可以获得当前元素个数
cout<<"当前元素个数为:"<