按序排列

不能指定插入位置

红黑树变体

不可以直接存取元素(即 无[?]/at(?)操作)

不可以直接修改元素值(用 先删除后添加的方式,达到相同效果)

A、头尾 添加/移除

B、随机存取

C、数据存取

1、构造函数

  1.1、默认构造函数 ==> 无参构造函数

  1.2、必定需要 复制构造函数 :set<T> setT(const set& st);

  1.3、set<T> setT(iteratorBegin, iteratorEnd);  // 迭代器区间[iteratorBegin, iteratorEnd)拷贝给setT

    注意: 这里可以传数组指针,数组指针在特定情况下可以当做迭代器使用

  1.4、无  // n个elemValue复制给lstT

2、赋值

  2.1、重载"="操作符

      set& = const set& vec;

  2.2、无  // [beg, end)区间拷贝给

  2.3、无  // n个elemValue拷贝给

3、迭代器操作

  3.1、const_iterator set<T>::begin();  // 第1个

  3.2、const_iterator set<T>::end();  // 最后1个

  3.3、const_reverse_iterator set<T>::rbegin();  // 倒数第1个

  3.4、const_reverse_iterator set<T>::rend();  // 倒数最后1个

4、插入

  注意: 拷贝插入(ZC: 也就是类实例的话,类必须提供复制构造函数)
  std::pair<set<T>::iterator, bool> pair = set::insert(elemValue);  // 返回pair<指向新元素的iterator, 插入是否成功>,拷贝插入

5、删除

  void set::clear();
  iterator set::erase(const_iterator beg, const_iterator end); // [beg, end)区间,返回下一个元素的位置(迭代器)
  iterator set::erase(const_iterator pos);           // 返回下一个元素的位置(迭代器)

  size_type set::erase(elemValue);  // 删除 容器中 值为 elemValue的元素

6、交换

  void set<T>::swap(set<T>&);

7、大小

  size_type set<T>::size();
  bool set<T>::empty();

8、查找

  iterator set::find(key_value elem);  // 返回指向elem的迭代器

  size_type set::count(key_value elem);  // 返回容器中值为elem的元素个数

  iterator set::lower_bound(key_value elem);  // 返回第一个>=elem元素的迭代器

  iterator set::upper_bound(key_value elem);  // 返回第一个>elem元素的迭代器

  std::pair<set<T>::iterator, set<T>::iterator> pair01 = setT.equal_range(key_value elem); // 返回容器中与elem相等的上下限的两个迭代器。上限是闭区间,下限是开区间。如[beg, end)

9、排序

  9.1、默认排序函数

    less<T>

    greater<T>

set/multiset_01的更多相关文章

随机推荐

  1. Summary: Java中函数参数的传递

    函数调用参数传递类型(java)的用法介绍. java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清. (一)基本数据类型:传值,方法不会改变实参的值. public class Te ...

  2. MySQL从删库到跑路_高级(五)——触发器

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.触发器简介 1.触发器简介 触发器是和表关联的特殊的存储过程,可以再插入,删除或修改表中的数据时触发执行,比数据 ...

  3. cda转MP3

    首先启动Windows Media Player播放器(依次单击“开始”——“所有程序”——“附件”——“娱乐”——“Windows Media Player”     在工具栏切换到“翻录”选项,这 ...

  4. python 换行符的识别问题,Unix 和Windows 中是不一样的

    关于换行符的识别问题,在Unix 和Windows 中是不一样的(分别是n 和rn).默认情况下,Python 会以统一模式处理换行符.这种模式下,在读取文本的时候,Python 可以识别所有的普通换 ...

  5. 功能测试三剑客:测试框架、bug预防、探索性测试

    功能测试有一套框架来实现完整的覆盖测试的各个维度 测试框架: 参加本人之前的博客测试框架(包括总体的框架.web测试框架.PC客户端.手机客户端.服务器端.接口测试)六部分,罗列了各个领域的测试覆盖考 ...

  6. python中的对象(三)

    一.python对象 python使用对象模型来存储数据.构造任何类型的值都是一个对象. 所有python对象都拥有三个特性:身份.类型.值 身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可 ...

  7. python之路----常用模块二

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  8. Python入门之字典的操作详解

    这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下: Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一 ...

  9. [Linux 003]——用户和用户组以及 Linux 权限管理(一)

    嗬!没想到吧!学习 Linux 的第三天,我们已经开始接触用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时 ...

  10. 20145105 《Java程序设计》第10周学习总结

    20145105 <Java程序设计>第10周学习总结 教材学习内容总结 JAVA网络编程 一.网络概述 (一)计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据 ...