Container comparison - c++ & java

Container comparison

C++ version is c++11. Java version is java se8.

C++JAVADescription
array / [ ][ ]固定大小的数组
vectorArrayList可变长度的数组
Vector可变长度的数组,支持同步操作,效率比 ArrayList 略差
listLinkedList双链表,便于增删
forward_list单链表,c++没有给他提供 size()的方法
dequeArrayDeque双向队列
stackStack栈,先进后出
queueQueue队,先进先出
priority_queuePriorityQueue支持优先级的队列
setTreeSet集合,数据有序,红黑树
unordered_setHashSet集合,数据无序,hash
mapTreeMapkey-value 映射,key 有序,红黑树
unordered_mapHashMapmap, 无序,hash
multiset集合,允许重复元素
multimapmap,允许重复的 key
unordered_multiset无序允许重复元素集合
unordered_multimap无序允许重复 key 的 map
LinkedHashSet按照插入顺序,支持 hash 查找
LinkedHashMap按照插入顺序,支持 hash 查找
HashTable类似 HashMap,效率略低
bitsetBitSet位操作

HashTable & HashMap

The HashMap class is roughly equivalent to Hashtable, except that it is asynchronized and permits nulls.

有两个不同:

  1. HashTable 是 synchronized 的
  2. HashTable 不支持 key 或 value 为 null。

同时由于 HashTable 是 synchronized 的,效率自然降低