STL 算法/容器——总论
0. 序列式容器与关联式容器
在 STL 库中,序列式容器主要有:
- vector、list、deque、stack、queue、heap、priority_queue、slist
关联式容器主要有:
- rb-tree、set(multiset)、map(multimap)
二者的最主要区别在于,序列式容器中元素的相对顺序是由元素添加的先后顺序决定的,而对于关联式容器而言,最终元素的相对顺序与添加的先后顺序无关,其内部有自己的排序规则,当有新的元素添加时,内部会自行进行调整。
或者一种相对不严格的说法就是,序列式容器因为顺序是已知的,就是某种添加的顺序(queue:先进先出,stack:先进后出),因此(不严格地说)可通过位置(index)进行索引相关元素(vec[i]);但对于关联式容器(map和set),每个元素都有一个键值(key)和实值(value),也即著名的键值对。
- map 同时拥有 key-value
- set 元素的键值就是实值,实值就是键值;
因此不可以通过 set 的迭代器来改变 set 的元素值;
1. 不同算法所需的迭代器类型
map/multimap
支持的迭代器相关函数:
- c.begin() / c.end()
- c.cbegin() / c.cend()
- c.rbegin() / c.rend()
- c.crbegin() / c.crend()
和其他所有的关联容器一样,这些迭代器都是双向迭代器。所以,对于只能接受随机访问迭代器的 STL 算法(例如排序算法或随机乱序random shuffling
算法),map / multimap 就无福消受了。
STL 算法/容器——总论相关推荐
- C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)
C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...
- C++中STL和容器、迭代器、算法之间的关系
自学习C++以来,一直对STL.容器.迭代器.算法甚是困惑. 参考一些资料,加上自己的理解,整理如下 如果说程序等于数据结构+算法,STL就是一个小程序库,之所以说小,是因为容器模板中常用的函数有限, ...
- C++中的STL算法详解
1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...
- 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...
一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...
- STL算法algorithm,
2019独角兽企业重金招聘Python工程师标准>>> STL算法部分主要由头文件<algorithm>,<numeric>,<functional&g ...
- STL算法中函数对象和谓词
算法中函数对象和谓词 函数对象和谓词定义 函数对象 谓词 一元函数对象案例 一元谓词案例 二元函数对象案例 二元谓词案例 预定义函数对象和函数适配器 使用预定义函数对象 算术函数对象 关系函数对象 逻 ...
- c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解
c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...
- STL算法学习[转]
原文:http://www.cppblog.com/mzty/archive/2007/03/14/19819.html STL算法学习,小结如下: 前提: 下载stl源码: http://www. ...
- [C++ STL] 各容器简单介绍
[C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...
最新文章
- 使用Linux的lsblk命令列出块设备信息
- 公安部拟规定:窃取个人信息不构成犯罪也处罚
- php 网站速度慢,php – 个人用户网站速度慢,但他们可以切换浏览器?
- python列表的复制,扯一下浅拷贝与深拷贝的区别
- 只需要2个工具,百度云盘大文件就能用迅雷和IDM下载
- POJ 3189 Steady Cow Assignment
- 客户端连接故障检查流程手段
- 太原理工大学ICPC队介绍(2021版)
- php SNMP函数时出错
- WinCE6.0 BootloaderMain源码分析之DownloadImage
- UML建模与软件工程
- 刚构桥的优缺点_桥梁钢结构特点及优缺点
- IDEA tomcat 发布时出现Error running 'Tomcat 7.0' Can't set permissions for file ***\jmxremote.access
- 验证码论文概述-----中文篇
- 第10章第27节:使用Psychedelic waves生成梦幻般的波纹图像 [PowerPoint精美幻灯片实战教程]
- 对就是对,错就是错。
- 步道乐跑怎么刷公里_步道乐跑怎么刷?
- Python 抽签随机排序小程序
- c语言 称重系统设计,动态称重系统设计.doc
- Java项目:(小程序)幼儿园报名系统(java+weixin-java-mp+spring+spring mvc+mybatis+layui+微信小程序)
热门文章
- 2d shader unity 阴影_【Unity Shader】平面阴影(Planar Shadow)
- equals()重写之后为什么要重写hashCode()方法
- Python之 面向对象封装案例
- java有关问题,Java常见有关问题和解决方法
- 小学计算机小蘑菇教案,森林里的小蘑菇教案.doc
- iis8 php mysql zend,强烈推荐windows 2012 iis8 fastcgi php5.2.17 zend mysql
- tomcat 版本_Tomcat竟然有bug,这我能信?
- TensorFlow基础篇(三)——tf.nn.softmax_cross_entropy_with_logits
- Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)
- leetcode 509. 斐波那契数(Fibonacci Number)