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 算法/容器——总论相关推荐

  1. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  2. C++中STL和容器、迭代器、算法之间的关系

    自学习C++以来,一直对STL.容器.迭代器.算法甚是困惑. 参考一些资料,加上自己的理解,整理如下 如果说程序等于数据结构+算法,STL就是一个小程序库,之所以说小,是因为容器模板中常用的函数有限, ...

  3. C++中的STL算法详解

    1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...

  4. 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...

    一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...

  5. STL算法algorithm,

    2019独角兽企业重金招聘Python工程师标准>>> STL算法部分主要由头文件<algorithm>,<numeric>,<functional&g ...

  6. STL算法中函数对象和谓词

    算法中函数对象和谓词 函数对象和谓词定义 函数对象 谓词 一元函数对象案例 一元谓词案例 二元函数对象案例 二元谓词案例 预定义函数对象和函数适配器 使用预定义函数对象 算术函数对象 关系函数对象 逻 ...

  7. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解

    c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...

  8. STL算法学习[转]

    原文:http://www.cppblog.com/mzty/archive/2007/03/14/19819.html STL算法学习,小结如下: 前提: 下载stl源码:  http://www. ...

  9. [C++ STL] 各容器简单介绍

    [C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...

最新文章

  1. 使用Linux的lsblk命令列出块设备信息
  2. 公安部拟规定:窃取个人信息不构成犯罪也处罚
  3. php 网站速度慢,php – 个人用户网站速度慢,但他们可以切换浏览器?
  4. python列表的复制,扯一下浅拷贝与深拷贝的区别
  5. 只需要2个工具,百度云盘大文件就能用迅雷和IDM下载
  6. POJ 3189 Steady Cow Assignment
  7. 客户端连接故障检查流程手段
  8. 太原理工大学ICPC队介绍(2021版)
  9. php SNMP函数时出错
  10. WinCE6.0 BootloaderMain源码分析之DownloadImage
  11. UML建模与软件工程
  12. 刚构桥的优缺点_桥梁钢结构特点及优缺点
  13. IDEA tomcat 发布时出现Error running 'Tomcat 7.0' Can't set permissions for file ***\jmxremote.access
  14. 验证码论文概述-----中文篇
  15. 第10章第27节:使用Psychedelic waves生成梦幻般的波纹图像 [PowerPoint精美幻灯片实战教程]
  16. 对就是对,错就是错。
  17. 步道乐跑怎么刷公里_步道乐跑怎么刷?
  18. Python 抽签随机排序小程序
  19. c语言 称重系统设计,动态称重系统设计.doc
  20. Java项目:(小程序)幼儿园报名系统(java+weixin-java-mp+spring+spring mvc+mybatis+layui+微信小程序)

热门文章

  1. 2d shader unity 阴影_【Unity Shader】平面阴影(Planar Shadow)
  2. equals()重写之后为什么要重写hashCode()方法
  3. Python之 面向对象封装案例
  4. java有关问题,Java常见有关问题和解决方法
  5. 小学计算机小蘑菇教案,森林里的小蘑菇教案.doc
  6. iis8 php mysql zend,强烈推荐windows 2012 iis8 fastcgi php5.2.17 zend mysql
  7. tomcat 版本_Tomcat竟然有bug,这我能信?
  8. TensorFlow基础篇(三)——tf.nn.softmax_cross_entropy_with_logits
  9. Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)
  10. leetcode 509. 斐波那契数(Fibonacci Number)