定义一个set类型
set<类型> a;
例如:set<int> a;
set内部红黑树,自动排序,默认从小到大
set<int,greater<int>>a;使set内从大大小排序。
multiset<类型> a;multiset与set不同的是前者允许有重复元素。
插入一个数:a.insert(x)
求长度:len=a.size()
a.begin() //返回set容器的第一个元素的地址
a.end() //返回set容器的最后一个元素的地址
a.erase(10); //删除值为10的元素
a.clear(); //删除所有元素
a.empty() //判断set容器是否为空
a.count(10) //查找10这个元素是否存在,因为set内不存在重复的数,存在返回1,不存在返回0
a.find(10) //查找value的位置,找到了返回该值value的迭代器,没找到则返回a.end()
set还有一个重要的应用是(二分)
配合upper_bound和lower_bound使用
有很多坑点感觉
set<int>::iterator it;
就像定义了一个指针,set不能像访问数组那样通过下标访问
it=a.begin()
此时it指向了set的第一个元素
输出:cout << *it
it=a.end()
it指向了set的最后一个元素的后一个地址
比如set:1、2、3、4、5
it=a.end()指向了5后面的地址,但输出是也会输出5
it--后再输出还是5
最后是二分函数的使用:
it=a.lower_bound(x);
it=a.upper_bound(y);