STL容器簡介

2021-09-11 12:20:14 字數 2220 閱讀 2480

1、stl簡介

2、stl中的容器及底層實現:

3、stl容器的公用函式:

stl提供六大元件,彼此可以組合套用:

(1)容器:容器用來存放資料,從實現的角度看,stl容器是一種類模板,包括vector、list、deque、set、map等。

(2)演算法:stl演算法是一種函式模板,各種常用的演算法如sort、search、copy、erase等。

(3)迭代器:扮演容器與演算法之間的膠合劑,是所謂的「泛型指標」,共有五種型別,以及其它衍生變化。從實現的角度看,迭代器是一種將operator*、operator->、operator++、operator--等指標相關操作予以過載的類模板,所有stl容器都附帶有自己專屬的迭代器。

(4)仿函式:行為類似函式,可以作為演算法的某種策略。從實現的角度看,仿函式是一種過載了operator()的類或者類模板。

(5)介面卡:一種用來修飾容器或仿函式或迭代器介面的東西。例如stack和queue,雖然看似容器,但是只能算一種容器介面卡,因為它們的底層完全借助deque或list,所有的操作都由底層的deque或list**。

(6)分配器:負責空間配置和管理,從實現的角度講,配置器是乙個實現了動態空間配置、空間管理、空間釋放的類模板。通常,分配器是由兩級分配器構成的記憶體管理器,當申請的記憶體大於128b時,就啟用第一級分配器通過malloc直接向系統的堆空間分配,如果申請的記憶體小於128b時,就啟用第二級分配器,從乙個預先定義好的記憶體池取一塊記憶體交付給使用者,這個記憶體池由16個不同大小(8~128b)空閒列表組成,分配器會根據申請記憶體的大小(將這個大小round up成8的倍數)從對應的空閒列表取表頭塊給使用者。這種做法有兩個優點:1)小物件快速分配,小物件從記憶體池分配;2)小物件從記憶體池分配,避免了內部碎片的產生。    

六大元件關係:容器(containers)通過分配器(allocators)取得資料儲存空間,演算法(algorithms)通過迭代器(iterators)訪問容器的內容,仿函式(functors)可以協助演算法完成不同的策略變化,介面卡(adapters)可以修飾或套接仿函式。

vectorv1 =

第一種初始化方式

vectorv2

第二種初始化方式

listl;

vectov3(l.begin(), l.end())

第三種初始化方式,以另種容器的元素為初值

int carray =

setc(begin(carray), end(carray))

第四種初始化方式,以某個c語言的array的元素作為初值

for(const auto& elem : coll)

唯讀的方式訪問元素,auto自定確定容器的元素型別

for(auto& elem : coll)

可寫的方式訪問元素

for(auto pos = coll.cbegin(); pos!=coll.cend(); ++pos)

迭代器的方式唯讀訪問元素

for(auto pos = coll.begin(); pos!=coll.end(); ++pos)

迭代器的方式可寫訪問元素

c.empty()

判斷容器是否為空,為空則返回true,否則返回false

c.size()

返回容器的元素數量,不適合forward_list<>

c.begin()

返回乙個iterator,指向第乙個元素

c.end()

返回乙個iterator,指向最末元素的下乙個位置

c.cbegin()

返回乙個const iterator,指向第乙個元素

c.cend()

返回乙個const iterator,指向最末元素的下乙個位置

c.clear()

移除所有元素,令容器為空,不適用於array<>

參考:《c++標準庫》

STL容器簡介

stl的容器可以分為以下幾個大類 一 序列容器,有vector,list,deque,string.二 關聯容器,有set,multiset,map,mulmap,hash set,hash map,hash multiset,hash multimap 三 其他的雜項 stack,queue,va...

STL標準容器類簡介

from 標準容器類 說明順序性容器 vector 從後面快速的插入與刪除,直接訪問任何元素 deque 從前面或後面快速的插入與刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入與刪除 關聯容器 set快速查詢,不允許重複值 multiset 快速查詢,允許重複值 map一對多對映,基於...

5 2 STL容器容器的簡介

stl容器的簡介 在資料儲存上,有一種物件型別,它可以持有其他物件或者指向其他物件的指標,這種物件型別叫容器,容器類是一種特定 重用問題的良好解決方案。stl容器的分類 1.順序性容器 vector vertor在底層是以陣列的形式存放,只能從末尾處插入。特點是查詢的快,插入的慢!deque 在底層...