按序排列

不能指定插入位置

红黑树变体

不可以直接存取元素(即 无[?]/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. 基于androidstudio3.0的build文件配置问题

    最近,在研究APP自动化相关的东西,在搭建环境的时候,遇到的坑以及最后解决的方法,不过目前很多东西了解得还不是很细,暂时先简单的记录一下一.build配置文件 主要分为两种: 1.工程下的build配 ...

  2. Java接口多线程并发测试 (一)

    本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...

  3. iOS开发--底部按钮和应用图标显示未读消息

    我们要实现的效果如下: 我们使用系统自带的,实际上,代码量很少,在我们要显示的按钮上,打上下面一句代码即可: self.tabBarItem.badgeValue = @"1"; ...

  4. http协议基础(十)实体首部字段

    1.定义 包含在请求和响应中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息 2.Allow 通知客户端能够支持的Request-URI指定资源的所有http方法:如果服务器接收到不支 ...

  5. Lintcode: Hash Function && Summary: Modular Multiplication, Addition, Power && Summary: 长整形long

    In data structure Hash, hash function is used to convert a string(or any other type) into an integer ...

  6. ef延迟加载不到导航属性问题

    最近做项目踩到了一个ef问题上的坑,导航属性(外键关键,如子表或主表等)“.”出来后是Null,外键值也对,数据库和ef的关系配置也都正确,就是加载不出来.后来发现实体里导航属性前少了个virtual ...

  7. LeetCode-EvaluteReversePolishNotation

    题目: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are + ...

  8. 改变 select下拉框 样式

    select{ outline: none; text-indent: 10px; height: 45px; line-height: 45px; width: 100%; border:1px s ...

  9. linux常用命令:iconv 命令

    iconv命令是linux下用于文件转编码的常用命令,对于同时使用windows系统和linux系统的同学来说文件转编码也是经常遇到的操作. 1.命令格式: iconv [选项...] [文件...] ...

  10. SNMP学习笔记之iReasoning MIB Browser

    0x00 MIB Browser iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持. MIB浏览器是工程师管理启用SNMP的网络设备和应用程 ...