1. 定义:元素按位置进行存储和访问。元素的排列次序与元素值无关,而是由元素添加到容器的次序决定的。

容器类型 定义 优点 缺点
string 可变大小数组 支持快速随机访问 在尾部之外的位置插入或删除元素可能很慢
deque 双端队列 支持快速随机访问 在头尾位置插入/删除速度很快
list 双向链表 双向顺序访问 任何位置进行插入/删除操作速度都很快
forward_list 单向链表 支持单向顺序访问 在链表任何位置进行插入/删除操作速度都很快
array 固定数组大小 支持快速随机访问 不能添加或删除元素

在一些特殊的情况下,比如如果既需要随机访问,又需要中间插入,那么可以考虑使用两个容器,最后合并容器元素。

2. 容器库

容器类型 定义
size_type 无符号整型,足以存储此容器类型的最大可能容器长度
iterator 此容器类型的迭代器类型
const_iterator 元素的只读迭代器类型
reverse_iterator 按逆序寻址元素的迭代器
const_reverse_iterator 元素的只读(不能写)逆序迭代器
difference_type 足够存储两个迭代器差值的有符号整型,可为负数
value_type 元素类型
reference 元素的左值类型,是value_type &的同义词
const_reference 元素的常量左值类型,等效于 const value_type &

2.1 迭代器支持的操作

2.2 begin和end操作

c.begin() 返回一个迭代器,它指向容器c的第一个元素
c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置
c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

2.3 特性操作:关系运算符

  • 通过“<运算符”实现.
  • 首先需要元素支持。如果元素是一个类,元素要重载<运算符

判断方法:

  • 容器相同大小,且所有元素都相同
  • 否则看谁第一个大

C++ Primer 5th笔记(9)chapter9 顺序容器相关推荐

  1. C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器

    1. vector 容器的自增长:当插入元素当存储空间不足时,vector 必须重新分配存储空间(比如将新空间大小增加为当前大小的2倍) 管理容量的成员函数 操作 定义 c.shrink_to_fit ...

  2. C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值

    1. 容器对象的构造和赋值 1.1 构造 C c; C c; //默认构造函数 C c1(c2) C c1=c2; C c{a,b,c,-} C c={a,b,c,-} C c(b,e)//eg. l ...

  3. C++ Primer 5th笔记(chap 11)关联容器

    •map •multimap •set •multiset •set •unordered_map •unordered_set •unordered_multimap •unordered_mult ...

  4. C++primer十万字笔记 第九章 顺序容器

    顺序容器   容器就是特定类型对象的集合,顺序容器为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应.标准库提供了三种容器类型. 顺序容器概述  标 ...

  5. C++ primer 5th笔记

    目录2022年11月25日 周五 阴 第一.二章:变量和基本类型 基本内置类型 unsigned float与double 'A'与"A" 布尔类型转换时 初始化与赋值 初始化 声 ...

  6. C++ Primer 5th笔记(9)chapter9 顺序容器 string

    1. string构造 string s; 定义一个新的空string对象,命名为s string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始 ...

  7. C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete

    insert.delete需要解决两个问题: 在什么位置插入? 返回什么位置? 1. 访问对象 操作 定义 c.back(); 返回c中尾元素的引用, 若c为空, 函数行为未定义. c.front() ...

  8. C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list

    1. 特殊的forward_list 单向链表的删除操作,真正删除的是某个元素后面的值(想想是为什么?) 操作 定义 lst.before_begin() 返回指向链表首元素之前不存在的元素的迭代器, ...

  9. C++ Primer 5th笔记(chap 11)关联容器---无序容器

    无序关联容器 unordered associative container •unordered_map •unordered_set •unordered_multimap •unordered_ ...

最新文章

  1. 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标
  2. 配置yum源并与公网同步更新
  3. oracle11g到底是什么6,Oracle11g六个重要进程
  4. ps里面的批处理教程
  5. linux替换文件内容cat,Linux下巧用cat与EOF实现文件的替换和追加
  6. [转载].SSRAM、SDRAM和Flash简要介绍
  7. swift 3.0 中使用 xib
  8. Android中使用shape来定义控件的显示属性
  9. cpu使用率_单片机里面的CPU使用率是什么鬼?
  10. 除了人工智能,霍金还担心“游牧外星人”会摧毁人类
  11. -创建日期和时间数组--提取年月日-显示格式
  12. 【Flutter】基础组件【02】Container
  13. 使用iTunes下载旧版本的IPA文件
  14. 搭建自己的无人值守本地影视点播系统
  15. 1080i/p-HDTV
  16. 为什么说速度超过光速能回到过去
  17. 渐变图形---音频条形图
  18. 分享20个无版权的高清无码图库站
  19. Java并发编程与技术内幕:线程池深入理解
  20. 数据的核密度估计及其可视化:Python实现

热门文章

  1. html5 datalist属性,HTML5 元素 datalist 介绍
  2. 电池报废征兆,三招辨别该不该换新
  3. java面试题在线做_java考试题目及答案也可以当面试题
  4. CSDN:解决粉丝网友集中问题留言处,把你所有的问题在留言处留言,我会一一回答
  5. DayDayUp:发明专利授予条件、撰写发明专利的注意事项以及申辩模板
  6. Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
  7. 成功解决TypeError: Cannot cast array data from dtype('float64') to dtype('U32') according to the rule '
  8. About The FTP
  9. JPEG图片扩展信息读取与改动
  10. Python 中的 lstrip、rstrip、strip