1. 1)使用set/multiset之前必须包含头文件<set>:#include<set>
  2.  
  3. 2namespace std{
  4. template <class T, class Compare = less<T>,
  5. class Allocator = allocator<T> >
  6. class set;
  7. template <class T, class Compare = less<T>,
  8. class Allocator = allocator<T> >
  9. class multiset;
  10. }
  11. 只要是assignablecopyablecomparable的型别T都可以成为setmultiset的元素型别。
  12. set/multiset的排序准则必须是strict weak ordering其意义是:1必须是反对称的,对判断式op而言,如果op(x,y)为真则op(y,x)为假。2必须是可传递的,如果op(x,y)为真且op(y,z)为真则op(x,z)。3必须是非自反的,op(x,x)永远为假。
  13.  
  14. 3set/multiset通常都是以平衡二叉树来实现的,事实上set/multiset的实现版本大多以红黑树来实现,它保证节点安插时最多只会做两个重新连接动作,而且到达某一元素的最长路径最多只是最短路径深度的两倍。
  15.  
  16. 4set/multiset的操作函数:
  17. set c 产生一个空set/multiset
  18. set c(op) op为排序准则产生一个空set/multiset
  19. set c1(c2) 产生某一个set/multiset的副本
  20. set c(beg, end) 以区间[beg, end)内的元素产生一个set/multiset
  21. set c(beg, end, op) op为排序准则,以区间[beg, end)内的元素产生一个set/multiset
  22. c.~set() 销毁所有元素,释放内存
  23. 其中set可为下列形式:set<Elem>、set<Elem, op>、multiset<Elem>、multiset<Elem, op>
  24.  
  25. c.size() 返回当前的元素数量
  26. c.empty() 判断c是否为空
  27. c.max_size() 返回可容纳的元素最大数值
  28. c1 compare c2 compare可为==,!=,<,>,<=和>=
  29.  
  30. c.count(elem) 返回“元素值为elem”的元素个数
  31. c.find(elem) 返回“元素值为elem”的第一个元素的迭代器,如果找不到就返回end()
  32. c.lower_bound(elem) 返回elem的第一个可安插位置,也就是“元素值>=elem”的第一个元素位置
  33. c.upper_bound(elem) 返回elem的最后一个可安插位置,也就是“元素值>elem”的第一个元素位置
  34. c.equal_range(elem) 返回elem的第一个和最后一个位置,也就是“元素值==elem”的第一个元素区间,返回值为将lower_bound()和upper_bound()的返回值做成一个pair返回
  35.  
  36. c1 = c2 c2全部元素赋值给c1
  37. c1.swap(c2) c1c2元素互换
  38.  
  39. c.begin() 返回一个双向存取迭代器(将元素视为常数),指向第一个元素
  40. c.end() 返回一个双向存取迭代器(将元素视为常数),指向最后元素的下一个位置
  41. c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一个元素
  42. c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置
  43.  
  44. c.insert(elem) 插入一个elem副本并返回新元素的位置
  45. c.insert(it, elem) 安插elem副本返回新元素的位置(it是一个提示指出安插操作的搜寻起点)
  46. c.insert(beg, end) 插入区间[beg, end)内的所有元素副本,无返回值
  47. c.erase(elem) 移除“与elem相等”的所有元素,返回被移除元素的个数
  48. c.erase(it) 移除it位置上的元素,无返回
  49. c.erase(beg, end) 移除[beg, end)区间内的所有元素,无返回
  50. c.clear() 将容器清空
  51. set提供如下接口:
  52. pair<iterator, bool> insert(const value_type& elem);
  53. pair结构中的second成员表示安插是否成功;first成员返回新元素的位置或返回现存的同值元素位置
  54. iterator insert(iterator pos_hint, const value_type& elem);
  55. multiset提供如下接口:
  56. iterator insert(const value_type& elem);
  57. iterator insert(iterator pos_hint, const value_type& elem);

  

STL中的set/multiset小结的更多相关文章

  1. STL中set和multiset小结

    (1)使用set/multiset之前必须包含头文件<set>:#include<set>    (2)namespace std{      template <cla ...

  2. STL中 set 和 multiset

    1. 所在头文件: <set>, 命名空间: std ; 声明如下: namespace std{ template <class T, class Compare = less&l ...

  3. STL中的map/multimap小结

    (1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...

  4. STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  5. 【转】 STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  6. (转)STL中set的用法

    转载自here 1.关于set map容器是键-值对的集合,好比以人名为键的地址和电话号码.相反地,set容器只是单纯的键的集合.例如,某公司可能定义了一个名为bad_checks的set容器,用于记 ...

  7. STL中的set容器的一点总结(转)

    STL中的set容器的一点总结 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂 ...

  8. STL中的set使用方法详细!!!!

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  9. STL中的set容器的一点总结2

    http://blog.csdn.net/sunshinewave/article/details/8068326 1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像 ...

随机推荐

  1. 3D touch 环境配置

    有人私信问我怎么配置环境,我就写个详细的,一步一步慢慢看,哈哈哈~ 打开下面 github, 记得FQ. https://github.com/DeskConnect/SBShortcutMenuSi ...

  2. 解决安卓SDK更新连不通问题

    http://wenku.baidu.com/link?url=d7t81OFF4_o2YF9iBne-azyovROGPGOozMgWKNyAIQK8vtI0mIjvzpfdOXg7KOobu202 ...

  3. Node.js的颠覆者:PHP的Swoole扩展

          最近2年Node.js很火,异步与协程是网络开发方面热门的话题.在追求新技术的同时,也应该反思下这里面存在的陷阱.Node.js确实是一门有趣好玩有个性的语言和技术,动态性,全异步回调的方 ...

  4. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  5. BarEditItem ContentTemplate

    <dxb:BarEditItem Name="txtSearch" > <dxb:BarEditItem.ContentTemplate> <Data ...

  6. oracle 判断中文函数

    create or replace function func_chinese(  p_str     in varchar2,     -- 输入的字符串  p_code    in varchar ...

  7. DataTable 排序

    DataTable newdtb = new DataTable(); newdtb.Columns.Add("Id", typeof(int)); newdtb.Columns. ...

  8. vim之插入

    进入vim插入模式,我们熟知的有: 字符位置插入: i      在光标之前插入 a     在光标之后追加 行位置插入: A  在一行的结尾处追加 I   在一行的开头处插入 o  在光标所在位置的 ...

  9. Updating Protobuf and GRPC in Golang

    转自: http://russmatney.com/techsposure/update-protobuf-golang-grpc/ TL;DR: When protobuf updates, all ...

  10. Tomcat8配置数据库连接池

    1.所有的tomcat项目共用一个连接池配置 1.1 修改conf->context.xml文件,在Context节点下配置 <Resource name="jdbc/myDat ...