ref. 《STL 源碼剖析》
STL 6大組件
- 容器 containers 一種class template 各種數據結構
序列式 vector list deque stack queue heap priority_queue slist
關聯式 tree RB-tree set map multitest multimap hashtable hash_set hash_map hash_multiset hash_multimap - 算法 algorithms 一種function template sort search copy erase…
容器與算法之間膠合劑,所謂 ”泛型指針”
五種類型以及衍生變化 - 迭代器 iterators 所有STL 容器都有自己專屬的迭代器。原生指針也是一種迭代器。
- 仿函數 functors 一種重載了operator()的class 或者 class template 一般函數指針可視爲狹義仿函數
- 配接器 adapters 一種修飾容器or仿函數 or 迭代器接口的東西
STL提供的queue stack 是一種容器適配器 配置器 allocators 負責空間配置管理 實現了動態空間配置管理釋放的class template
hash hash_map unordered_map 區別
http://blog.csdn.net/qq51931373/article/details/44196859- 線程安全的 是共享內存 互斥訪問 vevtor
- 非。。。。。。。。。。不互斥訪問 arraylist hash_map
http://bbs.csdn.net/topics/300263474
簡單的來講,在多線程情況下 vector.add(e),這樣寫就好了,如果你用ArrayList.add(e),那麼你就得這樣
synchronized(ArrayList)
{
ArrayList.add(e)
}
HashMap線程不安全(hash碰撞與擴容導致)