1 容器:类模板,通用数据结构(容器元素的组织方式)
2 迭代器:类似于指针,可依次存取容器中的元素(访问容器元素的媒介)
3 算法:函数模板,操作容器中的元素(操作方法)。
注意点:
顺序容器(sequential container)
关联容器(associative container)
容器适配器(container adaptors )
顺序容器的特点:
共同点:
不同点:
使用方法:包含与容器名称一样的头文件名
容器名称 | 随机访问元素 | 特点 |
---|---|---|
vector | 支持 | 连续存储,增添元素可能需要重新分配内存 |
string | 支持 | 连续存储,增添元素可能需要重新分配内存 |
deque | 支持 | 头尾添加删除与元素特别快 |
list | 不支持 | 双向链表,删除与添加元素快 |
forward_list(C++11) | 不支持 | 单链表,删除与添加元素快 |
array(C++11) | 支持 | 替换内置的数组 |
vector(动态数组):大部分时间尾部增删元素具有较佳性能(O(1)),序列变长由于内部空间不够,重新分配
deque(双端队列):大部分时间二端增删元素具有较佳性能。
list(双端链表):任何位置增删元素都是常数时间
? 适配器是库中一个通用的概念,除了容器适配器,还有函数适配器以及函数适配器以及迭代器适配器等。
简单讲,适配器使得某种东西表现的像另外一个东西。
例:stack adaptor takes a sequential container (other than array or forward_list) and makes it operate as if it were a stack.
three sequential container adaptors (3种顺序容器适配器)
注意点:
关联容器与顺序容器的主要区别:
关联容器的特点:
共同点:
不同点:
关联容器是 set 或者map
关联容器的key是唯一或者key是可以重复的(multiple keys)
关联容器的元素是有序的 或者无序的
关联容器名称 | 特点 |
---|---|
map | 容器中的元素是键值对(key-value pair) |
set | key就是value |
multimap | key可以重复出现 |
multiset | key可以重复出现 |
unordered_map | 使用hash函数实现 |
unordered_set | 使用hash函数实现 |
unordered_multimap | 使用hash函数实现,key可以重复出现 |
unordered_multiset | 使用hash函数实现,key可以重复出现 |
从表格中可以看到
注意点:
C++ primer 5th charpter9 & charpter 10
吐槽:时间过得真快,上次看C++的还是2年前。好多东西都忘光了。
-----20200704
原文:https://www.cnblogs.com/kfcuj/p/13235684.html