C 提高程式設計 2 STL初識

2022-09-22 00:18:12 字數 3051 閱讀 4693

2.1  stl的誕生

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

2.2  stl基本概念

stl(standard template library 標準模板庫)從廣義上分為:容器(container)、演算法(algorithm)、迭代器(iterator);容器和演算法之間可以通過迭代器進行無縫連線,stl的所有**幾乎都採用了模板類或者模板函式。

2.3  stl六大元件

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

1、容器:各種資料結構,如vector、list、daque、set、map等,用來存放資料。

2、演算法:各種常用演算法,如sort、find、copy、for_each等

3、迭代器:扮演了容器與演算法之間的膠合劑

4、仿函式:行為類似函式,可作為演算法的某種策略

5、介面卡:一種用來修飾容器或者仿函式或迭代器介面的東西

6、空間配置器:負責空間的配置與管理

2.4  stl中容器、演算法、迭代器

容器:置物之所也

stl容器就是將運用最廣泛的一些資料結構實現出來,常用的資料結構:陣列、鍊錶、樹、棧、佇列、集合、對映表等...這些容器分為序列式容器關聯式容器兩種:

序列式容器:強調值的排序,序列式容器中每個元素都有固定的位置。

關聯式容器:二叉樹結構,各元素之間沒有嚴格的物理上的順序關係。

如乙個陣列,存到序列式容器中是:;存到關聯式容器中是;

演算法:問題之解法也

有限的步驟,解決邏輯或數學上的問題,稱為演算法(algorithms)。演算法分為:質變演算法非質變演算法

質變演算法:是指運算過程中會更改區間內的元素內容,如拷貝,替換、刪除等...

非質變演算法:是指運算過程中不會更改區間內的元素內容,如查詢、計數、遍歷、尋找極值等...

迭代器:容器和演算法之間的膠合劑

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

迭代器種類:

2.5  容器演算法迭代器初識

2.5.1 vector存放內建資料型別

容器:vector

演算法:for_each

迭代器:vector::iterator

第一種遍歷

#includeusing

namespace

std;

#include

//vector容器存放內建資料型別

void

test1()

}int

main()

v.begin()和v.end() 位置**,當v.begin()指向v.end()的位置,退出迴圈。

第二種

#includeusing

namespace

std;

#include

//vector容器存放內建資料型別

void

test1()

}int

main()

第三種

#includeusing

namespace

std;

#include

#include

//標準演算法標頭檔案

//vector容器存放內建資料型別

void myprint(int

val)

void

test1()

intmain()

2.5.2  vector存放自定義資料型別

#includeusing

namespace

std;

#include

#include

//vector容器存放自定義資料型別

class

person

string

m_name;

intm_age;

};void

test1()}//

vector容器存放自定義資料型別指標

2.5.3  vector容器巢狀容器

容器巢狀容器,將所有資料遍歷輸出

#includeusing

namespace

std;

#include

#include

//容器巢狀容器

void

test1()

//將小容器插入到大容器

v.push_back(v1);

v.push_back(v2);

v.push_back(v3);

v.push_back(v4);

//通過大容器遍歷所有資料

for (vectorint>>::iterator it = v.begin(); it != v.end(); it++)

cout

<

}}int

main()

C 提高程式設計(2) STL初識

stl大體分為六大元件,分別是 容器 演算法 迭代器 仿函式 介面卡 配接器 空間配置器 容器 各種資料結構,如vector list deque set map等,用來存放資料。演算法 各種常用的演算法,如sort find copy for each等 迭代器 扮演了容器與演算法之間的膠合劑。仿...

c 主項練習錯題分析 2 STL容器

下面哪幾種是 stl 容器型別 vector setmultivector multiset array 正確答案 a b d e c 11 stl中的容器 一 順序容器 vector 可變大小陣列 deque 雙端佇列 list 雙向鍊錶 forward list 單向鍊錶 array 固定大小陣...

演算法筆記學習記錄(2) STL

c 標準模板庫 stl 1 vector 變長陣列 定義 vector name vectorname 訪問 1.像普通陣列一樣通過下標訪問 2.通過迭代器訪問,迭代器iterator可以理解為一種類似指標的東西,定義 vector iterator it,可以通過 it來訪問vector裡的元素。...