《C++ Primer》读书笔记-第九章 01 顺序容器

来源:互联网 发布:陇南市乡村大数据 编辑:程序博客网 时间:2024/05/15 08:09
作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24262745
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

正文

本章内容

  • 概述
  • 所有容器都适用的操作
  • 顺序容器适用的操作
  • vector内存
  • string操作
  • 适配器

顺序容器

元素的存储和访问依赖于元素加入容器时的位置
提供了快速顺序访问元素的能力

  • vector,string 快速随机访问,尾部增删快
  • deque 快速随机访问,头尾增删快
  • array 快速随机访问,不能增删
  • list 只支持双向顺序访问,任何位置增删都快
  • forward_list 只支持单向顺序访问,任何位置增删都快

string和vector将元素保存在连续的内存空间中,所以由下标计算其地址是非常快速的;这也就造成了如果要在中间位置增删元素,其后的所有元素都要移动

list和forward_list解决了在中间位置增删的问题,但是不支持随机访问,只能遍历整个窗口来访问某一个元素,且空间开销大

array是新c++标准增加的数组类型,是一种更安全更易使用的数组类型

如何确定使用哪种容器

尽量使用vecotr,除非有更好的选择

通常情况下,我们可以根据各个容器的特点以及我们的实际需要来确定使用哪种容器

一个特殊的情况是:如果程序只有在读取输入时才需要在容器中间位置插入元素,随后需要随机访问元素,则

  • 确定是否可以使用vector以及sort函数来避免在中间位置插入元素
  • 如果必须在中间位置插入元素,考虑在输入阶段使用list,一旦输入完成,将list中的内容拷贝到一个vector中使用

如果既需要在中间位置插入元素,又需要随机访问,则需要考虑是以空间换时间,还是以时间换空间。根据实际场景确定是使用list(forward_list)或vecotr(deque)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 抱养的孩子怎么办出生证明 斗鱼直播当皇帝怎么办 水龙头断在墙里怎么办 皮肤起疙瘩很痒怎么办 还了钱不承认怎么办 面发过头了怎么办又稀 面发好了很稀怎么办呀 做馒头面和稀了怎么办 苹果手机被锁了怎么办 汽车电池灯亮了怎么办 led台灯不亮了怎么办 家用led灯坏了怎么办 我手机中病毒了怎么办 手机中病毒了怎么办呢 火灾显示盘响了怎么办 绿萝的藤蔓太长怎么办 转转号永久封了怎么办 uc看不了视频了怎么办 win10玩传奇花屏怎么办 玩传奇老是卡屏怎么办 电脑玩传奇卡屏怎么办 哥哥太喜欢我了怎么办 吃了辣的肚子疼怎么办 吃了辣的拉肚子怎么办 被奈良小鹿咬了怎么办 车贷款合同丢了怎么办 按揭车合同丢了怎么办 70年产权到期后怎么办 70年产权到期了怎么办 牙龈起了个脓包怎么办 门铃按了不响怎么办 抵押车被抢走了怎么办 买二手车被坑了怎么办 店实在转不出去怎么办 苹果6s掉电快怎么办 苹果7通话声音小怎么办 自体脂肪填多了怎么办 入职体检有问题怎么办 入职体检没通过怎么办 家属不给谅解书怎么办 交通事故对方全责不赔偿怎么办