弄浪的鱼

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 类负责维护

STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统 称。现在主要出现在 c++ 中,但是在引入 c++ 之前该技术已经存在很长时间了。

STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之 间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传 统的由函数和类组成的库来说提供了更好的代码重用机会。