C++ primer笔记----顺序容器

1、顺序容器类型
vector:可变大小数组,支持快速随机访问,尾部插入数据很快,其他位置可能很慢
deque:双端队列。支持快速随机访问,头尾插入/删除数据很快
list:双向链表。只支持双向顺序访问,在其任何位置插入/删除数据都很快
array:固定大小数组,不能改变大小。支持快速随机访问,不能添加或删除元素
string:与vector类似,专用于保存字符。随机访问快,在尾部插入/删除速度快
forward_list:单向链表。只支持单向顺序访问。在链表任何位置插入/删除数据速度快

2、在通常情况下,使用vector是非常好的选择。且新版本的标准库容器比旧版本快很多。C++程序应该使用标准库容器,而不是原始的数据结构如:内置数组。

3、容器中的元素类型可以是另一个容器;
几个比较重要的容器操作:
c.empty():c中存储了元素,返回false.
c.cbegin():返回const_iterator
c.clear():清空容器

4、一个迭代器范围由一对迭代器表示,两个迭代器分别指向同一个容器或者最后一个元素之后的位置,这两个迭代器通常被称为begin和end,可以反复递增begin直到end

5、迭代器指向的元素范围是左闭合区间,注意end指向的是最后一个元素之后的位置。

6、读和写的不同,如果要写则返回的必然不能是const iterator

7、当将一个容器初始化为另一个容器的拷贝时,两个容器的容器类型和元素类型都必须相同。

8、当定义一个array时,除了指定元素类型,还要指定容器大小。

9、容器之间的拷贝,容器的类型和其中元素的类型都必须相同;利用迭代器进行拷贝,只需要其元素的范围,利用的是迭代器范围的对应元素进行初始化

10、赋值运算符要求左右的运算对象有相同的类型,但顺序容器(array除外)还定义了一个名为assign的成员函数,可以将类型不同但相容的对象进行赋值

11、判定容器之间的大小关系须遵循:
1:大小和元素对应相等,则容器相等
2:短容器的每个元素都等于长容器的对应元素,则短容器小于长容器
3:两容器皆不是另一容器的子序列,则比较结果取决于第一个不相等元素的比较结果

12、向标准容器中添加元素的方法:
1:push_back()
2:push_font()
3:emplace()
4:insert()

13、容器元素是拷贝,对容易中元素的任何改变都不会影响到原始对象,反之亦然

14、insert()函数将元素插入到迭代器所指定的位置之前, 返回值是第一个新加入元素的迭代器,即指向新插入元素的迭代器

15、front、back、at、下标,返回的都是第一个元素的引用,而begin返回的是第一个元素的迭代器

16、容器(除array)有许多的删除元素的方法
pop_back()
pop_front()
erase()
clear()

17、容器的size是指它已经保存元素的个数,capacity指的是不分配内存空间的前提下它最多可以保存的元素

18、vector中的元素在内存中是连续存放的,所以需要capacity这个东西~
list没有capacity是因为其存储元素的内存是不连续的,不需要capacity
array是因为其大小是固定的

19、reverse(n)函数,分配能容纳n个元素的内存。capacity(),返回容器的容量。
resize改变size但不改变capacity 没法释放vector的内存
reserve改变capacity 但只保证扩大会成功

20、从const char*创建string时,指针指向的数组必须以空字符结尾,拷贝操作遇到空字符时停止

21、string中的搜索函数,需要注意的是函数的返回值:string::size_type类型,找到时返回第一个匹配的下标位置,找不到时返回npos.,注意皆为unsigned类型

22、stack栈适配器有其特有操作,pop()—删除栈顶元素、push()—将元素压栈表示其进出栈操作,top()返回栈顶元素,但不弹出。先进后出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值