4.2、STL初識

蓝色的海嗷發表於2024-03-23

1、STL的誕生

  1. 長久以來,軟體界一直希望建立一種可重複利用的東西。
  2. C++ 物件導向泛型程式設計 思想,目的就是 複用性的提升
  3. 大多數情況下,資料結構和演算法都未能有一套標準,導致被迫從事大量的重複工作。
  4. 為了建立資料結構和演算法的一套標準,誕生了STL

2、STL的基本概念

  1. STL(standard Template Libary,標準模板庫
  2. STl從廣義上分為:容器(container)、演算法(algorithm)、迭代器(iterator)
  3. 容器演算法之間透過迭代器進行無縫連線
  4. STL幾乎所有的程式碼都採用了模板類或者模板函式

3、STL六大元件

STL大體分為六大元件,分別是:容器、演算法、迭代器、仿函式、介面卡(配接器)、空間配置器。

  1. 容器:各種資料結構,如vector、list、deque、set、map等,用來存放資料。
  2. 演算法:各種常用的演算法,如sort、find、copy、for_each等
  3. 迭代器:扮演了容器與演算法之間的膠合劑。
  4. 仿函式:行為類似函式,可作為演算法的某種策略。
  5. 介面卡:一種用來修飾容器或者仿函式或迭代器介面的東西。
  6. 空間配置器:負責空間的配置與管理。

4、STL中容器、演算法、迭代器

容器:

置物之所也
STL容器就是將運用最廣泛的一些資料結構實現出來
常用的資料結構:陣列,連結串列,樹,棧,集合,對映表 等。
這些容器分為 序列式容器關聯式容器兩種:
序列式容器:強調值的排序,序列式容器中的每個元素均有固定的位置。
關聯式容器:二叉樹結構,各元素之間沒有嚴格的物理上的順序關係。

演算法:

問題之解法也
有限的步驟,解決邏輯或數學上的問題,這一門學科我們叫做演算法(Algorithms)
演算法分為:質變演算法非質變演算法
質變演算法:是指運算過程中會更改區間內的元素的內容。例如複製,替換,刪除等等
非質變演算法:是指運算過程中不會更改區間內的元素內容,例如查詢、計數、遍歷、尋找極值等等

迭代器:

容器和演算法之間粘合劑
提供一種方法,使之能夠依序尋訪某個容器所含的各個元素,而又無需暴露該容器的內部表示方式。
每個容器都有自己專屬的迭代器
迭代器使用非常類似於指標,初學階段我們可以先理解迭代器為指標

image
常用的容器中迭代器種類為雙向迭代器,和隨機訪問迭代器