关联容器
c++11标准库中主要介绍了以下8种关联容器,其区别如下:
set与multiset(有序,节点只存一个值)
实现:平衡二叉树。
优点:自动排序使得查找有良好性能。
缺点:不能直接改变元素值,改变树则乱。
set与multiset的区别:前者每一个元素只能出现一次,不允许重复;后者元素可以重复。
map与multimap(有序,key/value可以任意)
实现:平衡二叉树。
优点:自动以key值大小排序使得查找有良好性能。
缺点:不能直接改变key值,改变树则乱。
map与multimap的区别:前者每一个key元素只能出现一次,不允许重复;后者key值可以重复。
unordered set与unordered multiset(无序,节点只有一个值)
实现:给定一个hash函数以hash table数据结构实现(内部实则是一个链表)。
优点:有助于快速访问
缺点:没有明确的排序,每一个都是随机的
unordered map与unordered multimap(有序,key/value可以任意)
实现:给定一个hash函数以hash table数据结构实现(内部实则是一个链表
优点:有助于快速访问
缺点:没有明确的排序,每一个都是随机的