stl的set,multiset, map, multimap, deque, list, stack, queue, priority_queue
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相关推荐
- [C++](13)stack queue priority_queue 模拟实现:容器适配器,deque介绍,仿函数详解
文章目录 使用 stack 栈 queue 队列 priority_queue 优先级队列 什么是容器适配器? deque 容器简单介绍 模拟实现 stack queue priority_queue ...
- 【C++】set/multiset/map/multimap
文章目录 一.set/multiset (集合) 1 set概念(自动排序.底层红黑树) 2 set构造和赋值(默认.拷贝.=赋值) 3 set大小和交换(size.empty.swap) 4 set ...
- C++ STL 容器的一些总结 --- set(multiset)和map(multimap)
1 set和multiset 1.1 插入元素方式 set只能用insert插入数据. insert返回值是一个pair<iterator, bool>, 即插入数据的迭代器以及是否插入成 ...
- STL容器及其简单应用(stack、priority_queue、vector、deuqe、list、map/multimap、set/multiset)
目录 前言 [1]stack操作以及应用 stack的几个核心接口 利用stack完成进制转换 [2]priority_queue操作以及应用 priority_queue的几个核心接口 利用prio ...
- STL详解(十)—— set、map、multiset、multimap的介绍及使用
文章目录 关联式容器 树形结构与哈希结构 键值对 set set的介绍 set的定义方式 set的使用 multiset map map的介绍 map的定义方式 map的插入 map的查找 map的删 ...
- 6-6-3:STL之map和set——multiset和multimap及set和map在oj题中的用处
文章目录 一:multiset和multimap (1)multiset (2)multimap 二:set和map在题目中的使用 (1)最喜欢吃的水果 (2)前k个高频单词 一:multiset和m ...
- 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 ...
- set/multiset/unordered_set和map/multimap/unordered_map基础汇总
引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...
- 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】
[C++][第六篇-2][黑马 p215~p242][list容器][set/multiset容器][map/multimap容器][函数对象][谓词][内建函数对象] 3.7 list容器(p215 ...
最新文章
- PTA基础编程题目集-6-11 求自定类型元素序列的中位数
- P3902 递增(LIS+树状数组)
- 互联网+创新时代,“智慧工地”助力武汉城市建设!
- 网站建设设计的基本事项需了解!
- java 二分查找_计算机入门必备算法——二分查找法
- mysql设置ssh连接_ssh修改连接数据库 将mysql改为sql连接
- System Center 2012 R2实例2—构建Azure Pack云10—租户RM
- 坑!自己走过的坑...
- 中移4G模块-ML302-OpenCpu开发-HTTP
- SQL---------表的约束
- 【iPhone】缺陷检测机器视觉在制造业缺陷检测的应用情况
- 太扎心!10亿网民:4成初中学历,月收入超5000元不足3成
- PHP中cookies跨目录无法调用解决办法
- 分享下nirsoft提供的注册表工具
- BSL编程语言 —— 系统化程序设计
- Centos7升级OpenSSL 1.0.2k-fips
- NRF51822---开发板介绍(连载1)
- 聊聊同步/异步/阻塞/非阻塞(举栗子说明)
- VHDL数字时钟设计及引脚锁定方法
- 一仓库失窃,四管理员被传讯_如何找到丢失或失窃的Android手机
热门文章
- 初中生自学python能学成吗-Python进入初中生学习课堂?风变编程助你从后浪中成功突围...
- 编程软件python下载怎么读-使用最方便的计算机编程软件,Python下载使用完美教程...
- 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
- 关于python的一些好的书籍推荐-推荐几本对于Python初学者比较好的书籍(内含PDF)...
- 扇贝编程python是干嘛的-产品观察 | 以对话式互动学习撬动转化,扇贝编程瞄准职教市场...
- python与人工智能编程-python学习(一)——python与人工智能
- 微软400集python课程-最强福利——来自微软的Python学习教程(开发指南)
- python开发工程师面试题-超实用面试必看,Python工程师面试题
- 网页版python叫什么-我不想浏览网页,那么我就用Python实现网页自动化朗读!
- python代码案例详解-Python综合应用名片管理系统案例详解