set实际上是平衡二叉树,需要声明头文件#include<set>

Insert:将元素插入集合中

使用前向迭代器对集合中序遍历

使用反向迭代器reverse_iterator可以反向遍历集合,需要用到rbegin()和rend()方法。

erase:删除的对象可以是某个迭代器位置上的元素、等于某键值的元素、一个区间上的元素和清空集合(clear)。

find:对集合进行搜索,如果找到查找的键值,返回该键值的迭代器位置,否则,返回最后一个元素后面的位置,即end().

set使用insert()将元素插入到集合中,根据设定的比较函数将该元素放到该放的节点上去。默认的比较函数是按键值从小到大的顺序插入元素。在很多情况下,需要自己写比较函数。编写比较函数的两种方法:

(1) 元素不是结构体,重写运算符()。下面这个是按键值从大到小的顺序将元素插入到集合中

struct myComp

{

bool operator()(const int &a,const int &b)const

{

return a > b;

}

}

(2) 元素是结构体,在结构体中重写运算符<。

struct Info

{

string name;

float score;

bool operator <(const Info &a)const

{

return a.score <score;

}

}

multiset用红黑树来组织元素数据的,允许重复元素的插入。需要声明头文件#include <set>

erase:删除multiset中的某个迭代器位置上的元素、某迭代器区间中的元素、键值等于某个值的所有重复元素并返回删除元素的个数。

clear():清空元素

find:如果找到,返回该元素的迭代器位置(如果该元素有重复,则返回第一个元素重复元素的迭代器位置),如果没有找到,返回end()迭代器位置。

map映照容器的元素数据是由一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。其也是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只对元素的键值进行比较。插入大概有两种方法,一种是直接m[key] = value,其中m是map类型数据,key是声明时的键值类型的数据。另一种是使用方法insert(pair<type1, type2>(type1数据,type2数据)).

erase:删除某个迭代器位置的元素、等于某个键值的元素、一个迭代器区间上的元素

clear:清空元素.

元素反向遍历:使用反向迭代器reverse_iterator,需要用到rbegin()和rend()方法

find:如果找到,返回该键值的迭代器位置,否则返回end()迭代器位置。

比较函数:其比较函数与set一样。

multimap允许插入重复键值的元素,需要声明头文件#include<map>

erase:删除某个迭代器位置上的元素、等于某个键值的所有重复元素、一个迭代器区间上的元素。

clear:清空元素

find:只返回重复键中的第一个元素的迭代器位置,没有找到就返回end()

deque是双端队列容器,需要声明头文件#include<deque>,其对象创建与vector相似,有三种:一种是空元素,一种是固定n个元素的,另一种是固定n个,有初始值的。

push_back:从尾部插入元素,会不断扩张队列

push_front():从头部插入元素,不会增加新元素,只将原有的元素覆盖。相当于将原有的元素向后移,移出去的元素就有存在了。

insert:从中间插入元素,不会增加新元素,只将原来的元素覆盖。

元素遍历:(1)以数组方式;(2)以前向迭代器的方式;(3)反向迭代器方式

pop_front:从头部删除元素

pop_back:从尾部删除元素

erase:从中间删除元素,其参数是迭代器位置

clear:清空deque对象

list是双向循环链表容器,需要头文件#include<list>.由于list对象的节点并不要求在一段连续的内存中,对于迭代器,只能通过”++”或”--”的操作将迭代器移动到后继/前驱节点元素处,而不能对迭代器进行+n或-n的操作,这是与vector不同的地方。

push_back:向尾部插入新元素,链表自动扩张

push_front:向首部插入新元素,链表自动扩张

inset:向迭代器位置处插入新元素,链表自动扩张,注意,迭代器只能进行”++”或”--”操作。

元素遍历:(1)前向迭代器遍历;(2)反向迭代器遍历

remove:根据元素的值来删除,而不是根据迭代器位置

erase:删除迭代器位置上的元素

pop_back:删除链表尾元素

pop_front:删除链表首元素

clear:清空链表

unique:删除连续重复元素

find:注意这个是用#include<algorithm>中的算法,而不是用list的成员方法

sort:注意这个是list的方法,则不是#include<algorithm>中的算法

stack是堆栈容器,声明头文件#include<stack>

push:将元素入栈

pop:出栈

top:访问栈顶元素

empty:判断堆栈是否为空

size:返回当前堆栈中有几个元素

queue是队列容器,需要声明头文件#include<queue>

push:入队

pop:出队

front:读队首元素

back:读队尾元素

empty:判断队列是否为空

size:队列当前元素的数目

priority_queue是优先队列容器,需要头文件#include<queue>.有一个特性,就是队列中的最大元素总是位于队首,并非按先进先出的原则进行,而是将当前队列中最大的元素出队。元素的比较规则默认为按元素的值从大到小排序,可以重载”<”操作符或操作符”()”来重新定义比较规则。

push:入队

pop: 出队

top:读队首元素

empty:判断队列是否为空

size:返回队列元素个数

stl的set,multiset, map, multimap, deque, list, stack, queue, priority_queue相关推荐

  1. [C++](13)stack queue priority_queue 模拟实现:容器适配器,deque介绍,仿函数详解

    文章目录 使用 stack 栈 queue 队列 priority_queue 优先级队列 什么是容器适配器? deque 容器简单介绍 模拟实现 stack queue priority_queue ...

  2. 【C++】set/multiset/map/multimap

    文章目录 一.set/multiset (集合) 1 set概念(自动排序.底层红黑树) 2 set构造和赋值(默认.拷贝.=赋值) 3 set大小和交换(size.empty.swap) 4 set ...

  3. C++ STL 容器的一些总结 --- set(multiset)和map(multimap)

    1 set和multiset 1.1 插入元素方式 set只能用insert插入数据. insert返回值是一个pair<iterator, bool>, 即插入数据的迭代器以及是否插入成 ...

  4. STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)

    目录 前言 [1]stack操作以及应用 stack的几个核心接口 利用stack完成进制转换 [2]priority_queue操作以及应用 priority_queue的几个核心接口 利用prio ...

  5. STL详解(十)—— set、map、multiset、multimap的介绍及使用

    文章目录 关联式容器 树形结构与哈希结构 键值对 set set的介绍 set的定义方式 set的使用 multiset map map的介绍 map的定义方式 map的插入 map的查找 map的删 ...

  6. 6-6-3:STL之map和set——multiset和multimap及set和map在oj题中的用处

    文章目录 一:multiset和multimap (1)multiset (2)multimap 二:set和map在题目中的使用 (1)最喜欢吃的水果 (2)前k个高频单词 一:multiset和m ...

  7. STL标准模板库中的vector、string、deque、stack、list、set和map的详细介绍——C++学习记录01

    文章目录: 1.vector 1.1 遍历方式 1.2 构造函数 1.3 容量大小问题 1.4 插入和删除 1.5 存取值 1.6 交换两个vectot的元素 1.7 预定义存储空间 2.string ...

  8. set/multiset/unordered_set和map/multimap/unordered_map基础汇总

    引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...

  9. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】

    [C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...

最新文章

  1. PTA基础编程题目集-6-11 求自定类型元素序列的中位数
  2. P3902 递增(LIS+树状数组)
  3. 互联网+创新时代,“智慧工地”助力武汉城市建设!
  4. 网站建设设计的基本事项需了解!
  5. java 二分查找_计算机入门必备算法——二分查找法
  6. mysql设置ssh连接_ssh修改连接数据库 将mysql改为sql连接
  7. System Center 2012 R2实例2—构建Azure Pack云10—租户RM
  8. 坑!自己走过的坑...
  9. 中移4G模块-ML302-OpenCpu开发-HTTP
  10. SQL---------表的约束
  11. 【iPhone】缺陷检测机器视觉在制造业缺陷检测的应用情况
  12. 太扎心!10亿网民:4成初中学历,月收入超5000元不足3成
  13. PHP中cookies跨目录无法调用解决办法
  14. 分享下nirsoft提供的注册表工具
  15. BSL编程语言 —— 系统化程序设计
  16. Centos7升级OpenSSL 1.0.2k-fips
  17. NRF51822---开发板介绍(连载1)
  18. 聊聊同步/异步/阻塞/非阻塞(举栗子说明)
  19. VHDL数字时钟设计及引脚锁定方法
  20. 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机

热门文章

  1. 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...
  2. 编程软件python下载怎么读-使用最方便的计算机编程软件,Python下载使用完美教程...
  3. 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
  4. 关于python的一些好的书籍推荐-推荐几本对于Python初学者比较好的书籍(内含PDF)...
  5. 扇贝编程python是干嘛的-产品观察 | 以对话式互动学习撬动转化,扇贝编程瞄准职教市场...
  6. python与人工智能编程-python学习(一)——python与人工智能
  7. 微软400集python课程-最强福利——来自微软的Python学习教程(开发指南)
  8. python开发工程师面试题-超实用面试必看,Python工程师面试题
  9. 网页版python叫什么-我不想浏览网页,那么我就用Python实现网页自动化朗读!
  10. python代码案例详解-Python综合应用名片管理系统案例详解