C++ STL 注意点

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是相同的。

你可能感兴趣的:(C++)