转自:https://www.cnblogs.com/xenny/p/9362743.html
https://www.cnblogs.com/isChenJY/p/11535335.html
1,首先Set遵循数学集合三特性,无重复、无序性、确定性
Set中内置红黑树进行排序,所以插入删除效率很高。
2,基操
int a[] = {1,2,3,4,5}; set<int>q; q.insert(x); //集合中插入元素 q.insert(a,a+5); //插入数组a至a+5的元素 q.find(x); //返回x值位置的迭代器,找不到返回q.end() q.erase(iter); //删除集合中的元素 q.size(); //返回当前set容器中的元素个数 q.count(); //返回某个值元素的个数(根据set的特性,就是判断这个元素在不在,返回0或1) q.begin(); //返回头位置迭代器 q.end(); //返回尾位置迭代器 q.rbegin(); //返回尾部反向迭代器 q.rend(); //返回头部反向迭代器 q.clear(); //删除set容器中的所有的元素 q.empty(); //判断set容器是否为空 q.lower_bound(); //返回指向大于(或等于)某值的第一个元素的迭代器 q.upper_bound(); //返回大于某个值元素的迭代器
4,函数
insert(x):可将 x 插入 set 容器中,并自动递增排序和去重,时间复杂度O(logN)
3,排序
struct cmp{ bool operator() (const node &a,const node &b){ return a.x < b.x; } }; set<node,cmp>q;
========= ======== ======== ======= ====== ====== ==== === == =
定风波 苏轼 宋
三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。
莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴