序列容器:vector,list,deque,string.
關聯容器:set,multiset, map, mulmap,hash_set, hash_map, hash_multiset, hash_multimap
其他的雜項:stack, queue,valarray, bitset
vector
內部資料結構:陣列。
隨機訪問每個元素,所需要的時間為常量。
在末尾增加或刪除元素所需時間與元素數目無關,在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化。
可動態增加或減少元素,記憶體管理自動完成,但程式設計師可以使用reserve()成員函式來管理記憶體。
vector的迭代器在記憶體重新分配時將失效(它所指向的元素在該操作的前後不再相同)。當把超過capacity()-size()個元素插入vector中時,記憶體會重新分配,所有的迭代器都將失效;否則,指向當前元素以後的任何元素的迭代器都將失效。當刪除元素時,指向被刪除元素以後的任何元素的迭代器都將失效。
deque
內部資料結構:陣列。(訪問元素、刪除增加元素性質與vector相同)
可動態增加或減少元素,記憶體管理自動完成,不提供用於記憶體管理的成員函式。
增加任何元素都將使deque的迭代器失效。在deque的中間刪除元素將使迭代器失效。在deque的頭或尾刪除元素時,只有指向該元素的迭代器失效。
list
內部資料結構:雙向環狀鍊錶。可雙向遍歷。
不能隨機訪問乙個元素。在開頭、末尾和中間任何地方增加或刪除元素所需時間都為常量。
可動態增加或減少元素,記憶體管理自動完成。
增加任何元素都不會使迭代器失效。刪除元素時,除了指向當前被刪除元素的迭代器外,其它迭代器都不會失效。
slist
內部資料結構:單向鍊錶。
不可雙向遍歷,只能從前到後地遍歷。
其它的特性同list相似。
stack
介面卡,它可以將任意型別的序列容器轉換為乙個堆疊,一般使用deque作為支援的序列容器。
元素只能後進先出(lifo)。不能遍歷整個stack。
queue
介面卡,它可以將任意型別的序列容器轉換為乙個佇列,一般使用deque作為支援的序列容器。
元素只能先進先出(fifo)。不能遍歷整個queue。
priority_queue
介面卡,它可以將任意型別的序列容器轉換為乙個優先順序佇列,一般使用vector作為底層儲存方式。
只能訪問第乙個元素,不能遍歷整個priority_queue。第乙個元素始終是優先順序最高的乙個元素。
set
鍵和值相等。鍵唯一。元素預設按公升序排列。
如果迭代器所指向的元素被刪除,則該迭代器失效。其它任何增加、刪除元素的操作都不會使迭代器失效。
multiset
鍵可以不唯一。其它特點與set相同。
hash_sethash_multiset
鍵可以不唯一。其它特點與hash_set相同。
map
鍵唯一。元素預設按鍵的公升序排列。
如果迭代器所指向的元素被刪除,則該迭代器失效。其它任何增加、刪除元素的操作都不會使迭代器失效。
multimap
鍵可以不唯一。
其它特點與map相同。
hash_maphash_multimap
鍵可以不唯一。
其它特點與hash_map相同
template < typename _tp, typename _sequence = deque<_tp> >
class stack;
第乙個template代表元素型別;第二個template代表stack內部存放元素所用的實際容器,預設用deque。
之所以選擇deque而不是vector是因為:
1. deque移除元素時候會釋放記憶體,
2. deque不必在重新分配記憶體是複製全部元素
實際上,stack只是很單純的把各項操作轉換為內部容器的對應呼叫。這從其實現**也可以看出,下面是stack的源**,這裡去掉了value_type等宣告和構造析構函式等,主要列舉了幾個常用的介面:
protected:
_sequence c; ///內部容器
public:
bool
empty() const
size_type size() const
reference top() ///注意top返回的是reference
const_reference top() const
void push(const value_type& __x)
void pop()
可以使用任何序列式容器來支援stack,只要他們支援back(),push_back(),pop_back()等動作就行。
如以vector支援stack可定義:stack> intstack;
ORACLE相關內容
1 em,dbca,netca,netmgr出現亂碼方案 cd oracle home jre lib mv font.properties font.properties.bak mv font.properties.zh font.properties em,dbca,netca,netmgr詳...
JVM相關內容
本地 native code 每個因素對記憶體占用的影響又會隨著應用程式 執行環境和系統平台的不同而變化,那怎樣計算總的記憶體佔用量?是的,想得到乙個準確的數字不是那麼容易,因為 你很難控制本地 native 部分。你能控制的部分只有堆大小 xmx,類占用的記憶體 xx maxpermsize,還有...
指標相關內容
1.指標是變數,佔4位元組,存放的是位址 2.指標型別與零值比較 if n null 或者if n null 3.野指標 int p 空指標 int p null 避免野指標 以char型別為例 char p char mallloc sizeof char 10 要包含標頭檔案 include 使...