C++ primer 中文第三版 阅读笔记 第六章

一、 Vector与List:

#include<vector>

#include<list>

1. 他们相当于线性存储的两种形式,Vector 是动态数组,List 是链表。

2. 主要区别是他们的存储方式上,Vector 是一片连续存储空间,而List不一定是,所以对于Vector支持直接寻址访问,List 却只能用迭代器进行访问。

3. 扩容方式,对于Vector 存在一个扩容问题,假如原先存储的空间不够了,Vector 就需要扩容,但是它的扩容并不是需要一个扩充一个,它会多扩充一部分空间预留使用。主要是这样的,对于数据类型size小的它会多分配n个sizeof(数据类型)的空间,但是大的类它只会需要一个就分配一个。这样的话一般类型size小的用Vector存,扩容也快;但是类型size很大时,建议用List存储。

总而言之,Vector便于直接寻址、小数据的扩容。而List更加擅长处理大数据类型。


二、ctype

#include <locale> 

ctype类是定义了一些好用的方法: isalpha()、 isdigit() 、ispunct()、 isspace()、 toupper()、  tolower()等函数


三、map

#include<map>

这是一个key/data的数据容器类型,用法map<string, int> word_count;  这样的话是string类型的key,存的是int类型的data。需要插入key->data。具体用法再去google吧,这里不做具体介绍,只是要知道map是干什么用的就行了。

四、set

#include <set> 

这个是c++集合类,元素间字符是互异的。insert插入、利用count(被搜索数据)确定集合中元素个数、find(被搜索数据)返回数据iterator指针。set<声明的类型>::iterator itr = set.begin(); itr++ 来遍历。


五、multimap, multiset。

#include<multimap>

#include<multiset>

这是map和set允许key或元素重复的版本,用法与map和set基本相同

六、stack

#include <stack> 

栈,后入先出。注意pop()是void类型的,如果想查看顶上的元素那么就top()查看完了,在pop()弹出。stack使用deque实现的,因为他支持前端插入删除,但是vector并不支持。

empty()  如果栈为空则返回true 否则返回false  
size()  返回栈中元素的个数 
pop()  删除但不返回栈顶元素 
top()  返回但不删除栈顶元素 
push(item)  放入新的栈顶元素 

七、queue

#include<queue>

优先队列,先入先出。这里有FIFO队列和优先队列之分(就是按照优先级区分,优先级高的现出来,叫priority_queue)。缺省情况下,元素的优先级由底层元素类型相关的小于操作符执行(其实就是和FIFO队列一致)。

empty()  如果队列为空则返回true 否则返回false 
size()  返回队列中元素的个数 
pop()  删除但不返回队首元素
,在priority_queue弹出的是优先级最高的。
front()  返回但不删除队首元素它只能应用在一般队列上 
back()  返回但不删除队尾元素它只能应用在一般队列上 
top()  返回
, 但不删除priority_queue 的优先级最高的元素只能应用在priority_queue 上 
push(item)  在队尾放入一个新元
素。对于priority_queue是按优先级排序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值