C++ Primer 5th笔记(9)chapter9 顺序容器
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 顺序容器相关推荐
- C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器
1. vector 容器的自增长:当插入元素当存储空间不足时,vector 必须重新分配存储空间(比如将新空间大小增加为当前大小的2倍) 管理容量的成员函数 操作 定义 c.shrink_to_fit ...
- 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 ...
- C++ Primer 5th笔记(chap 11)关联容器
•map •multimap •set •multiset •set •unordered_map •unordered_set •unordered_multimap •unordered_mult ...
- C++primer十万字笔记 第九章 顺序容器
顺序容器 容器就是特定类型对象的集合,顺序容器为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应.标准库提供了三种容器类型. 顺序容器概述 标 ...
- C++ primer 5th笔记
目录2022年11月25日 周五 阴 第一.二章:变量和基本类型 基本内置类型 unsigned float与double 'A'与"A" 布尔类型转换时 初始化与赋值 初始化 声 ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 string
1. string构造 string s; 定义一个新的空string对象,命名为s string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始 ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete
insert.delete需要解决两个问题: 在什么位置插入? 返回什么位置? 1. 访问对象 操作 定义 c.back(); 返回c中尾元素的引用, 若c为空, 函数行为未定义. c.front() ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list
1. 特殊的forward_list 单向链表的删除操作,真正删除的是某个元素后面的值(想想是为什么?) 操作 定义 lst.before_begin() 返回指向链表首元素之前不存在的元素的迭代器, ...
- C++ Primer 5th笔记(chap 11)关联容器---无序容器
无序关联容器 unordered associative container •unordered_map •unordered_set •unordered_multimap •unordered_ ...
最新文章
- 【Qt】通过QtCreator源码学习Qt(十一):Utils::Icon,根据不同主题、不同状态变换图标
- 配置yum源并与公网同步更新
- oracle11g到底是什么6,Oracle11g六个重要进程
- ps里面的批处理教程
- linux替换文件内容cat,Linux下巧用cat与EOF实现文件的替换和追加
- [转载].SSRAM、SDRAM和Flash简要介绍
- swift 3.0 中使用 xib
- Android中使用shape来定义控件的显示属性
- cpu使用率_单片机里面的CPU使用率是什么鬼?
- 除了人工智能,霍金还担心“游牧外星人”会摧毁人类
- -创建日期和时间数组--提取年月日-显示格式
- 【Flutter】基础组件【02】Container
- 使用iTunes下载旧版本的IPA文件
- 搭建自己的无人值守本地影视点播系统
- 1080i/p-HDTV
- 为什么说速度超过光速能回到过去
- 渐变图形---音频条形图
- 分享20个无版权的高清无码图库站
- Java并发编程与技术内幕:线程池深入理解
- 数据的核密度估计及其可视化:Python实现
热门文章
- html5 datalist属性,HTML5 元素 datalist 介绍
- 电池报废征兆,三招辨别该不该换新
- java面试题在线做_java考试题目及答案也可以当面试题
- CSDN:解决粉丝网友集中问题留言处,把你所有的问题在留言处留言,我会一一回答
- DayDayUp:发明专利授予条件、撰写发明专利的注意事项以及申辩模板
- Python之pandas:数据类型变换之object、category、bool、int32、int64、float64以及数据类型标准化之详细攻略
- 成功解决TypeError: Cannot cast array data from dtype('float64') to dtype('U32') according to the rule '
- About The FTP
- JPEG图片扩展信息读取与改动
- Python 中的 lstrip、rstrip、strip