deque:http://zh.cppreference.com/w/cpp/container/deque
deque是一种分段连续的数据结构,它的iterator可以跨段寻找。
stack,queue是一种适配器,可以将deque,list封装成相应的数据结构,stack和queue不提供iterator,因为这两种线性表本来就不支持数据的查找和遍历。queque不可以选择vector作为底层支持,因为vector移除前面的数据效率很低,没有提供函数接口pop_front.
-----------------------------------------------------------------------------------------------------
rb_tree:https://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91
红黑树是一种变相的2-4 树,即一种变异B-树,一种宽松的平衡二叉树,插入元素时即保证排序,树的高度也不会超过黑高度的两倍(每一分支的黑节点树木相同,且红节点不相邻)。树的操作最繁琐的是插入和删除,红黑树的插入和删除只涉及局部的旋转和染色,不会打破树的整体结构。
set,multiset,map ,multimap是基于rb_tree的适配器。我们无法使用它们的iterator修改红黑树的节点,否则树会重新排序。
适配器:通过引用底层容器的“typedef”来封装自己,或者继承底层容器,单只公开部分接口(参考课件标准库.pdf的Page133)。
----------------------------------------------------------------------------------------------------------
hashtable:https://zh.wikipedia.org/wiki/%E5%93%88%E5%B8%8C%E8%A1%A8
unordered_set,unorder_map的底层结构,典型的空间换时间。