C++ STL(1)
from my csdn blog
C++標(biāo)準(zhǔn)模板庫(kù)
-
容器
- C++標(biāo)準(zhǔn)模板庫(kù)提供了10種容器
- 基于數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)的邏輯結(jié)構(gòu)
- 線(xiàn)性
- 非線(xiàn)性
- 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
- 順序存儲(chǔ):把數(shù)據(jù)存儲(chǔ)與一段連續(xù)地址空間的內(nèi)存中
- 鏈?zhǔn)酱鎯?chǔ):使用節(jié)點(diǎn)(數(shù)據(jù)域+指針域),通過(guò)指針關(guān)聯(lián)銜接。在存儲(chǔ)中不一定相鄰
- 數(shù)據(jù)的操作
- 操作定義于數(shù)據(jù)的邏輯結(jié)構(gòu)上,具體實(shí)現(xiàn)與存儲(chǔ)結(jié)構(gòu)相關(guān)。
- 常用操作:訪(fǎng)問(wèn)元素、統(tǒng)計(jì)個(gè)數(shù)、更新、插入、刪除、查找、排序
- 數(shù)據(jù)的邏輯結(jié)構(gòu)
- 線(xiàn)性表
- 棧(stack)
- 隊(duì)列(queue)
- 優(yōu)先隊(duì)列(priority queue)
- 優(yōu)先級(jí)隊(duì)列是隊(duì)列的一種形式,它是對(duì)每次插入隊(duì)列后的數(shù)據(jù)按某種規(guī)則進(jìn)行排序,每次刪除的均是優(yōu)先級(jí)最高的數(shù)據(jù)元素。
- 樹(shù):有層次關(guān)系
- 二叉樹(shù)
- 堆
- 圖
- 無(wú)層次關(guān)系,每個(gè)元素有多個(gè)前驅(qū)和后繼
- 數(shù)組、矩陣
-
C++容器
- 在數(shù)據(jù)存儲(chǔ)上,有一種對(duì)象類(lèi)型,它可以持有其它對(duì)象或指向其它對(duì)像的指針,這種對(duì)象類(lèi)型就叫做容器。
- 用于保存其他對(duì)象的對(duì)象,并且這種對(duì)象還包含一系列處理其他對(duì)象的方法。
- 可容器是隨著面向?qū)ο笳Z(yǔ)言的誕生而提出的,容器類(lèi)在面向?qū)ο笳Z(yǔ)言中特別重要,在現(xiàn)在幾乎所有的面向?qū)ο蟮恼Z(yǔ)言中也都伴隨著一個(gè)容器集。以自行擴(kuò)展(自行申請(qǐng)釋放內(nèi)存,并用最優(yōu)的算法來(lái)執(zhí)行命令)
-
通用容器
- 順序性容器
- 是一種各元素之間有順序關(guān)系的線(xiàn)性表,是一種線(xiàn)性結(jié)構(gòu)的可序群集。順序性容器中的每個(gè)元素均有固定的位置,除非用刪除或插入的操作改變這個(gè)位置。這個(gè)位置和元素本身無(wú)關(guān),而和操作的時(shí)間和地點(diǎn)有關(guān),順序性容器不會(huì)根據(jù)元素的特點(diǎn)排序而是直接保存了元素操作時(shí)的邏輯順序。比如我們一次性對(duì)一個(gè)順序性容器追加三個(gè)元素,這三個(gè)元素在容器中的相對(duì)位置和追加時(shí)的邏輯次序是一致的。
- 關(guān)聯(lián)式容器
- 和順序性容器不一樣,關(guān)聯(lián)式容器是非線(xiàn)性的樹(shù)結(jié)構(gòu),更準(zhǔn)確的說(shuō)是二叉樹(shù)結(jié)構(gòu)。各元素之間沒(méi)有嚴(yán)格的物理上的順序關(guān)系,也就是說(shuō)元素在容器中并沒(méi)有保存元素置入容器時(shí)的邏輯順序。但是關(guān)聯(lián)式容器提供了另一種根據(jù)元素特點(diǎn)排序的功能,這樣迭代器就能根據(jù)元素的特點(diǎn)“順序地”獲取元素。
- 關(guān)聯(lián)式容器另一個(gè)顯著的特點(diǎn)是它是以鍵值的方式來(lái)保存數(shù)據(jù),就是說(shuō)它能把關(guān)鍵字和值關(guān)聯(lián)起來(lái)保存,而順序性容器只能保存一種(可以認(rèn)為它只保存關(guān)鍵字,也可以認(rèn)為它只保存值)。這在下面具體的容器類(lèi)中可以說(shuō)明這一點(diǎn)。
- 容器適配器
- 容器適配器是一個(gè)比較抽象的概念,C++的解釋是:適配器是使一事物的行為類(lèi)似于另一事物的行為的一種機(jī)制。
- 容器適配器是讓一種已存在的容器類(lèi)型采用另一種不同的抽象類(lèi)型的工作方式來(lái)實(shí)現(xiàn)的一種機(jī)制。其實(shí)僅是發(fā)生了接口轉(zhuǎn)換。那么你可以把它理解為容器的容器,它實(shí)質(zhì)還是一個(gè)容器,只是他不依賴(lài)于具體的標(biāo)準(zhǔn)容器類(lèi)型,可以理解是容器的模版。或者把它理解為容器的接口,而適配器具體采用哪種容器類(lèi)型去實(shí)現(xiàn),在定義適配器的時(shí)候可以由你決定。
- 順序性容器
-
標(biāo)準(zhǔn)容器類(lèi)
- 順序性容器
- vector
- 從后面快速的插入與刪除,直接訪(fǎng)問(wèn)任何元素
- deque
- 從前面或后面快速的插入與刪除,直接訪(fǎng)問(wèn)任何元素
- list
- 雙鏈表,從任何地方快速插入與刪除
- vector
- 關(guān)聯(lián)容器
- set
- 快速查找,不允許重復(fù)值
- multiset
- 快速查找,允許重復(fù)值
- map
- 一對(duì)多映射,基于關(guān)鍵字快速查找,不允許重復(fù)值
- multimap
- 一對(duì)多映射,基于關(guān)鍵字快速查找,允許重復(fù)值
- set
- 容器適配器
- stack
- 后進(jìn)先出
- queue
- 先進(jìn)先出
- priority_queue
- 最高優(yōu)先級(jí)元素總是第一個(gè)出列
- stack
- 順序性容器