1.vector
1). random access --- 即得到第i個元素所花的時間為常數,與i無關。
2). varying length --- 即長度可變,stl容器的共性,由庫管理記憶體
3). amortized constant time insertion and deletions at the end
--- 即在vector尾部插入或刪除所花的時間分配到每種情況下為常數。
插入時涉及到記憶體分配問題,設vector.size()=n,當其capacity也為n時,在尾部插入資料時需要重新分配空間,這就涉及到資料拷貝問題,一般重新分配空間時都會以某種策略增長(如n的某個倍數),比如以2n,這樣從n->2n,插入n個資料,只是開始拷貝了n個資料,以後並沒有進行資料拷貝,只把相應資料插入vector尾部即可,消耗時間分攤一下為o(n/n),即為常數級。
2. deque
同vector,只是在隊頭隊尾插入刪除消耗時間分攤後也為常數。(迴圈佇列實現?)
3. list
取第i個元素所花時間與n線性相關,在任何地方插入、刪除時間為常數。
4 set、map
都屬於sorted sociated container,裡面的內容都是排序好的。
c STL 1 容器總覽
序列式容器 他們的排列順序和輸入的順序一致,stl中有三個常用序列式容器 vector,deque,list vector 允許隨機存取,也就是可以直接利用索引進行存取任何元素,但在頭部和中部進行存取較為耗時,優勢是在尾部附加元素或者移除元素效率極高,實現如 include include 標頭檔案...
同步類容器和併發類容器
同步類容器都是執行緒安全的,但是某些場景下可能需要加鎖來保護複合操作。複合類操作如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下一個元素 以及條件運算。這些複合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodifica...
同步類容器和併發類容器
同步類容器都是執行緒安全的,但在某些場景下可能需要加鎖來保護複合操作。複合類操作。如 迭代 反覆訪問元素,遍歷完容器中所有的元素 跳轉 根據指定的順序找到當前元素的下一個元素 以及條件運算。這些複合操作在多執行緒併發地修改容器時,可能會表現出意外的行為,最經典的便是concurrentmodific...
同步類容器和併發類容器
同步類容器都是執行緒安全的,同步容器類包括 vector 和 hashtable,二者都是早期 jdk 的一部分,此外還包括在 jdk1.2 當中新增的一些功能相似的類,這些同步的封裝類是由 collections.synchronized 等工廠方法建立的。但在某些場景下可能需要加鎖來保護複合操作...
同步類容器和併發類容器
一 同步類容器 同步類容器都是執行緒安全的,但在某些場景下可能需要加鎖來保護複合操作。複合類操作如 迭代 反覆訪問元素,遍歷完容器中的所有元素 跳轉 根據指定的順序找到當前元素的下一個元素 以及條件運算。這些複合操作在多執行緒併發的修改容器時,可能會表現出意外的行為,最經典的便是concurrent...