STL容器底層原理及容器操作總結

2021-08-16 07:53:12 字數 996 閱讀 5772

最近在總結c++的一些知識,所有內容都來自<

vector:

vector的資料結構:單向開口線性連續空間。

迭代器就是乙個普通指標,random access iterator

注意:對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。

list:

list的資料結構:

list是乙個雙向鍊錶,迭代器必須具備前移,後移的能力,所以list提供的是bidirectional iterator.

deque:

是一種雙向開口的連續線性空間。deque沒有所謂容量觀念,因為,它是動態地以分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起來。

迭代器是

random access iterator

。stack:

是一種先進後出的資料結構,它只有乙個出口。stack不提供遍歷功能,也不提供迭代器。

queue:

是一種先進先出的資料結構有兩個出口。queue不提供遍歷功能,也不提供迭代器。

//關聯式容器

底層機制都是紅黑數,紅黑樹也是個容器,但是並不開放給外界使用。

set:

不可以通過set的迭代器改變set的元素值。

容器操作總結**):(下面這篇博文總結得很好)

沒有時間更詳細的補充,之後再補充,所有東西都是我自己的筆記,便於更好地理解容器的一些操作。

STL容器的區別及底層實現

在stl中基本容器有 vector list deque set map set 和map都是無序的儲存元素,只能通過它提供的介面對裡面的元素進行訪問 set 集合,用來判斷某乙個元素是不是在乙個組裡面,使用的比較少 map 對映,相當於字典,把乙個值對映成另乙個值,如果想建立字典的話使用它好了 底...

STL之關聯容器的對映底層

stl的關聯容器有set,map,multiset,multimap.用於實現它們的底層容器有劃入標準的rb tree和待增加標準的hashtable.底層容器rb tree為上層容器提供了一種有序的服務.關鍵步驟時間複雜度為o lgn 底層容器hashtable為上層容器提供的是無序的服務,但其關...

STL容器操作 string詳解

1 string概念 string和char 的比較 string封裝了char 管理這個字串,是乙個char 型的容器。string管理char 所分配的記憶體。每一次string的複製,取值都由string類負責維護,不用擔心複製越界和取值越界等。查詢find,拷貝copy,刪除erase,替換...