(1)使用set/multiset之前必须包含头文件<set>:#include<set>

(2)namespace std{
template <class T, class Compare = less<T>,
class Allocator = allocator<T> >
class set;
template <class T, class Compare = less<T>,
class Allocator = allocator<T> >
class multiset;
}
只要是assignable、copyable、comparable的型别T都可以成为set或multiset的元素型别。
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)永远为假。 (3)set/multiset通常都是以平衡二叉树来实现的,事实上set/multiset的实现版本大多以红黑树来实现,它保证节点安插时最多只会做两个重新连接动作,而且到达某一元素的最长路径最多只是最短路径深度的两倍。 (4)set/multiset的操作函数:
set c 产生一个空set/multiset
set c(op) 以op为排序准则产生一个空set/multiset
set c1(c2) 产生某一个set/multiset的副本
set c(beg, end) 以区间[beg, end)内的元素产生一个set/multiset
set c(beg, end, op) 以op为排序准则,以区间[beg, end)内的元素产生一个set/multiset
c.~set() 销毁所有元素,释放内存
其中set可为下列形式:set<Elem>、set<Elem, op>、multiset<Elem>、multiset<Elem, op> c.size() 返回当前的元素数量
c.empty() 判断c是否为空
c.max_size() 返回可容纳的元素最大数值
c1 compare c2 compare可为==,!=,<,>,<=和>= c.count(elem) 返回“元素值为elem”的元素个数
c.find(elem) 返回“元素值为elem”的第一个元素的迭代器,如果找不到就返回end()
c.lower_bound(elem) 返回elem的第一个可安插位置,也就是“元素值>=elem”的第一个元素位置
c.upper_bound(elem) 返回elem的最后一个可安插位置,也就是“元素值>elem”的第一个元素位置
c.equal_range(elem) 返回elem的第一个和最后一个位置,也就是“元素值==elem”的第一个元素区间,返回值为将lower_bound()和upper_bound()的返回值做成一个pair返回 c1 = c2 将c2全部元素赋值给c1
c1.swap(c2) 将c1和c2元素互换 c.begin() 返回一个双向存取迭代器(将元素视为常数),指向第一个元素
c.end() 返回一个双向存取迭代器(将元素视为常数),指向最后元素的下一个位置
c.rbegin() 返回一个逆向迭代器,指向逆向迭代的第一个元素
c.rend() 返回一个逆向迭代器,指向逆向迭代的最后元素的下一个位置 c.insert(elem) 插入一个elem副本并返回新元素的位置
c.insert(it, elem) 安插elem副本返回新元素的位置(it是一个提示指出安插操作的搜寻起点)
c.insert(beg, end) 插入区间[beg, end)内的所有元素副本,无返回值
c.erase(elem) 移除“与elem相等”的所有元素,返回被移除元素的个数
c.erase(it) 移除it位置上的元素,无返回
c.erase(beg, end) 移除[beg, end)区间内的所有元素,无返回
c.clear() 将容器清空
set提供如下接口:
pair<iterator, bool> insert(const value_type& elem);
pair结构中的second成员表示安插是否成功;first成员返回新元素的位置或返回现存的同值元素位置
iterator insert(iterator pos_hint, const value_type& elem);
multiset提供如下接口:
iterator insert(const value_type& elem);
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. javascript实例——时间日期篇(包含5个实例)

    本来想在网上找一些js实例来练练手,结果发现一本书<突破JavaScript编程实例五十讲>,看了下内容还不错,就下了下来: 后面又下了该书籍的源码,一看才发现这本书编的日期是2002年的 ...

  2. [推荐]dubbo分布式服务框架知识介绍

    [推荐]dubbo分布式服务框架知识介绍 CentOS+Jdk+Jboss+dubbo+zookeeper集群配置教程    http://wenku.baidu.com/view/20e8f36bf ...

  3. NEWS - InstallShield 2013 SP1发布

    2013的这个国庆假期期间,InstallShield厂商Flexerasoftware(中文名:福莱睿)发布了最新版本InstallShield 2013的SP1,由于这个升级包带来一些新的技术支持 ...

  4. Android——GridView(网格视图)相关知识总结贴

    Android API中文文档GridView http://www.apkbus.com/android-14131-1-1.html   Android API 中文 (15) —— GridVi ...

  5. 【Vegas原创】RHEL6多界面切换方法

    CTRL+ALT+Fn(n=1-6) F1,是图形化界面 F2-F6,是字符型界面. 每个界面可以干不同的事情,很牛叉.  

  6. IOS越狱开发之——进程通讯

    Mac OS下的IPC方式种类很多,大约有下面几种. 1. Mach API 2. CFMessagePort 3. Distributed Objects (DO) 4. Apple events  ...

  7. 【C/C++】随机数问题

    最初问题:从n个数中随机选择m个数(0<=m<=n). 为了便于描述,可以将该问题抽象为:从0-n-1这n个数中随机选择m个数.计算机能够提供的随机数都是伪随机的,我们假设计算机提供的伪随 ...

  8. OpenSSL命令---pkcs8

    用途: pkcs8格式的私钥转换工具.它处理在PKCS#8格式中的私钥文件.它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 Private ...

  9. Windows 8 图标前面的勾选

    http://bbs.pcbeta.com/viewthread-999730-1-1.html 不管是桌面的图标还是资源管理器中的图标之前都出现了一个小小的方框.选中图标的时候会自动勾选那个框,如果 ...

  10. ps中如何用抽出功能扣取头发

    一些图片中需要扣取人的头发,非常不好扣,本文介绍抽取扣除 打开一个人物图片,用ctrj+j分别复制几个图层,从下往上分别为:背景副本,图层2(用于修改成别的背景),图层1抽头发白色(用于抽头发,强制前 ...