弄浪的鱼

map 以键值对的形式存储数据,所有元素根据键值自动排序。pair 的第 一元素被称为键值,第二元素被称为实值。map 也是以红黑树为底层实现机制。

map 和 multimap 区别在于,map 不允许相同 key 值存在,multimap 则允许相同 key 值存在。

deque 是 “double-ended queue”的缩写,和 vector 一样,deque 也支持随机存取。 与 vector 不同的是,vector 是单向开口的,deque 是双向开口的,在两端进行插入和删除操作的时间复杂度为 O(1)。此外,deque 没有容量的概念,因为它是动态的以分段的连续空间组合而成,随时可 以增加一段新的空间并链接起来,换句话说,像 vector 那样“因旧空间不足而重新分配一 块更大的空间,然后再复制元素,释放空间”这样的操作不会发生在 deque 身上,也因此 deque 没有必要提供所谓的空间保留功能。

deque操作示意图

  • 双端插入和删除元素效率较高.
  • 指定位置插入也会导致数据元素移动,降低效率.
  • 可随机存取,效率高.

string 是对 char * 的封装,具有如下特性:

  • char 是一个指针,string 是一个类。string 实现了对 char 的封装,是 char* 的容器
  • string 封装了许多字符串操作的方法,比如 find、copy、delete、replace、insert 等
  • 不用考虑内存释放和越界,内存由 string 类负责维护