STL 算法/容器——总论

来源:互联网 发布:软件美化大师 编辑:程序博客网 时间:2024/05/16 00:30

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 就无福消受了。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 联想g40-70开机黑屏怎么办 新主机开不了机怎么办 联想720s笔记本闪屏怎么办 华硕k40ie显卡坏了怎么办 开机黑屏进入bois后怎么办 2根内存条不兼容怎么办 联想笔记本r720系统崩溃怎么办 联想天逸310卡怎么办 新买的鼠标没反应怎么办 联想笔记本触屏鼠标失灵怎么办 无线鼠标接收器丢了怎么办 联想笔记本系统重装失败怎么办 联想笔记本屏幕闪屏怎么办 种植牙螺钉掉了怎么办 水管牙断里面了怎么办 水龙头起泡器不起泡怎么办 14mm乘8mm残留怎么办 宝宝吃了螺丝冒怎么办 收割机滚筒皮带轮键槽滚了怎么办 微信界面变小了怎么办 拉杆箱螺丝掉了怎么办 洗衣机应急门锁没有拉绳怎么办? 奔驰glc发动机声音大怎么办 淋膜机模具螺丝拧不动怎么办 一字螺丝滑丝了怎么办 螺丝拧歪卡住了怎么办 车牌螺丝拧歪了怎么办 空心墙打膨胀螺丝打不上怎么办 沉孔内六角螺丝滑丝怎么办 内六角螺丝滑了怎么办? 三色灯不变光了怎么办 卧室灯不变色了怎么办 圆柱齿轮减速机噪音大怎么办 轴与套间隙生锈怎么办 汽车停小区被刮怎么办 下楼梯摔跤了 屁股疼 怎么办 剧烈咳嗽震的肚子疼怎么办 饺子粘在盘子上怎么办 生饺子粘在盘子怎么办 饺子粘在案板上怎么办 饺子冷冻粘起了怎么办