C++ STL 注意点

180it 2020-10-13 AM 1508℃ 0条

C++ STL 注意点

1、存储内存

所有的STL的容器的元素都是存储在堆中,所有的内存的开辟和释放都是容器自己解决的。

整体内存分为:

堆区域
栈区域
全局存储区:这其中BSS的没有初始化; DATA是初始化后的变量。
文字常量区
程序代码区
2、常用的STL 容器总结

(1)序列容器:一般常用的。

vector:动态顺序容器。

注意每次push元素,如果个数超过当前的capxxx容量值,会重新分配内存,内存是连续的;重新分配的时候之前的迭代器全部失效; 再次分配的时候,分配的大小是之前的1.5倍。

list:双向链表,可在两头插入和删除

stack:栈,LIFO后进先出结构

deque:双端队列

queue:单端队列

priority_queue:优先队列,常用于实现数据结构中的堆结构

1538032058323

(2)关联容器

set:唯一存储的,和python中的set一致的
multiset:和set一样的的,但是键值不是唯一的
hash_set: 基于hash的set,键值唯一的
hash_multiset:基于hash的multiset,键值可以不唯一
map:字典,key值是唯一的,按照键值的升序排列
multimap:与map相同,但是键值不唯一,按照键值的升序排列
hash_map:与map相同的,排序按照hash键值排序的,键值是唯一的
hash_multimap:键值不唯一,其余和hash_map是相同的。

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

C++ STL 注意点