set
set是一种集合容器,所包含的元素是唯一的,集合中的元素按一定顺序排列,元素插入过程是按排序规则插入,所以不能插入指定位置
set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树,插入和删除比vector快。
set不能直接存取元素
set<int> s1;//默认情况下是从小到大 相当于set<int ,less<int>> s1
set<int ,greater<int>> s2;//从大到小
s1.insert(100);//插入元素
s1.erase(s1.begin());//删除头部元素
仿函数:一个类中重载函数调用操作符
struct Func
{
bool operator()(const class c1,const class c2)
{
}
}
set<class,Func> s1;
查询参数插入是否成功
pair<set<int ,Func>::iterator,bool > p1 = s1.inster(100);
p1.second = true://成功
s1.find(elem);//查找元素elem,返回指向elem的 迭代器
s1.count(elem);//返回容器中elem的元素个数,对set来说是0或1,对multiset来说可能大于1
s1.lower_bound();//返回第一个>=elem元素的迭代器
s1,upper_bound();//返回第一个>elem元素的迭代器
s1.equal_range(elem);//返回容器中与elem相等的上下限的两个迭代器,上限是闭区间,下限是开区间
pair<set<int>::iterator ,set<int>::iterator >p2 = s1.equal_range(elem);
multiset:值可以出现多次