C++中的容器种类
序列容器
**–vector:**提供了自動內(nèi)存管理功能(采用了STL普遍的內(nèi)存管理器allocator),可以動態(tài)改變對象長度,提供隨機訪問。在尾部添加和刪除元素的時間是常數(shù)的,但在頭部或中間就是線性時間。
–deque:雙端隊列(double-ended queue),支持隨機訪問,與vector類似,主要區(qū)別在于,從deque對象的開始位置插入和刪除元素的時間也是常數(shù)的,所以若多數(shù)操作發(fā)生在序列的起始和結(jié)尾處,則應(yīng)考慮使用deque數(shù)據(jù)結(jié)構(gòu)。為實現(xiàn)在deque兩端執(zhí)行插入和刪除操作的時間為常數(shù)時間這一目的,deque對象的設(shè)計比vector更為復(fù)雜,因此,盡管二者都提供對元素的隨機訪問和在序列中部執(zhí)行線性時間的插入和刪除操作,但vector容器更快些。
–list:雙向鏈表(是循環(huán)的)。目的是實現(xiàn)快速插入和刪除。
–forward_list(C++11):實現(xiàn)了單鏈表,不可反轉(zhuǎn)。相比于list,forward_list更簡單,更緊湊,但功能也更少。
**–queue:**是一個適配器類。queue模板讓底層類(默認(rèn)是deque)展示典型的隊列接口。queue模板的限制比deque更多,它不僅不允許隨機訪問隊列元素,甚至不允許遍歷隊列。與隊列相同,只能將元素添加到隊尾、從隊首刪除元素、查看隊首和隊尾的值、檢查元素數(shù)目和測試隊列是否為空。
–priority_queue:是另一個適配器類,支持的操作與queue相同。 priority_queue模板類是
總結(jié)