C++ primer 笔记9. 顺序容器

概述

  • 顺序容器类型:

C++ primer 笔记9. 顺序容器

 

容器库

  • 迭代器类型:

C++ primer 笔记9. 顺序容器

  • 容器初始化: 

C++ primer 笔记9. 顺序容器

  • array:具有固定大小,定义时,需要指定容器大小

C++ primer 笔记9. 顺序容器

  • assign(顺序容器):

array不支持assign以及花括号包围的值列表进行赋值

C++ primer 笔记9. 顺序容器

  • swap:

交换两个容器的内部数据结构,元素本身并未交换,操作很快

C++ primer 笔记9. 顺序容器

除string外,迭代器、引用和指针都不会失效

swap array会交换它们的元素,因此时间与array中元素的数目成正比

swap array后,指针,引用和迭代器绑定的元素不变,值发生了交换

  • 容器大小操作:

C++ primer 笔记9. 顺序容器

  • 关系运算符:类型相同,且定义了相应的比较运算符

 

 

顺序容器

  • 添加元素:

C++ primer 笔记9. 顺序容器

用一个对象初始化容器/插入到容器中时,放入容器中的是对象值的拷贝

  • 元素访问:

C++ primer 笔记9. 顺序容器

forward_list迭代器不支持递减操作

  • 删除元素:

C++ primer 笔记9. 顺序容器

  • 改变容器大小:

C++ primer 笔记9. 顺序容器

可能导致vector, string, deque所有迭代器、指针和引用失效

  • deque容器操作对迭代器的影响:

删除vector, string中元素会使删除点之后的迭代器、引用、指针失效

向vector, string添加元素,存储空间可能重新分配,所有迭代器、引用、指针失效

向vector, string添加元素,存储空间没有重新分配,插入位置之后的迭代器、引用、指针失效

插入/删除deque中除首尾位置之外的任何元素都会使迭代器、引用、指针失效

在deque首尾位置添加元素,迭代器会失效,但引用和指针不会失效

删除deque尾元素,尾后迭代器失效;删除首元素不受影响

list, forward_list迭代器、引用、指针不会失效,删除元素会导致尾后迭代器失效

  • forward_list操作:

C++ primer 笔记9. 顺序容器

添加删除元素是通过改变给定元素之后的元素来完成

C++ primer 笔记9. 顺序容器

 

 

vector对象增长

当需要获取新的内存空间,vector和string会分配比新空间需求更大的内存空间

只有当vector容量满,或者调用resize, reserve函数时,vector才会重新分配内存空间

  • 管理容量函数:

C++ primer 笔记9. 顺序容器

 

 

额外string操作

  • 其他构造函数:

C++ primer 笔记9. 顺序容器

  • substr操作:

C++ primer 笔记9. 顺序容器

  • 修改操作:

C++ primer 笔记9. 顺序容器

  • 搜索:

C++ primer 笔记9. 顺序容器

  • compare函数:

C++ primer 笔记9. 顺序容器

  • 数值转换:

C++ primer 笔记9. 顺序容器

 

 

容器适配器

stack/queue基于deque实现

priority_queue基于vector实现

适配器:使某种事物的行为看起来像另外一种事物

  • 支持操作:

C++ primer 笔记9. 顺序容器

  • 定义:

C++ primer 笔记9. 顺序容器

  • 栈:

C++ primer 笔记9. 顺序容器

  • 队列:

C++ primer 笔记9. 顺序容器