STL容器相關內容

2021-07-04 13:07:15 字數 2726 閱讀 8501

序列容器: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 使...