stl大體分為六大元件:分別是容器、演算法、迭代器、仿函式、介面卡(配接器)、空間配置器
容器:各種資料結構,如vector、list、deque、set、map等,用來存放資料
演算法:各種常用的演算法,如sort、find、copy、for_each等
迭代器:扮演了容器與演算法之間的膠合劑
仿函式:行為類似函式,可作為演算法的某種策略
介面卡:一種用來修飾容器或者仿函式或迭代器介面的東西
空間配置器:負責空間的配置與管理
stl容器就是將運用最廣泛的一些資料結構實現出來
常用的資料結構:陣列、鍊錶、樹、棧、佇列、集合、對映表等
這些容器分為序列式容器和關聯式容器:
序列式容器:強調值的排序,序列式容器中的每個元素均有固定位置
關聯式容器:二叉樹結構,各元素之間沒有嚴格的物理上的順序關係
有限的步驟,解決邏輯或數學上的問題,這一門學科我們叫做演算法
演算法分為質變演算法和非質變演算法:
質變演算法:運算過程中會更改區間內的元素的內容。例如拷貝、替換、刪除等
非質變演算法:是指運算過程中不會更改區間內的元素內容,例如查詢、計數、遍歷、尋找極值等
提供一種方法,使之能夠依序尋訪某個容器所含的各個元素,而又無需暴露該容器的內部表示方式
每個容器都有自己專屬的迭代器
迭代器使用非常類似於指標,初學階段我們可以先理解迭代器為指標
種類功能
支援運算
輸入迭代器
對資料的唯讀訪問
唯讀,支援++、==、!=
輸出迭代器
對資料的只寫訪問
只寫,支援++
前向迭代器
讀寫操作,並能向前推進迭代器
讀寫,支援++、==、!=
雙向迭代器
讀寫操作,並能向前和向後操作
讀寫,支援++、--
隨機訪問迭代器
讀寫操作,可以以跳躍的方式訪問任意資料
讀寫,支援++、--、[n]、-n、<、<=、>、>=
常用的容器中迭代器種類為雙向迭代器,和隨機訪問迭代器
stl中最常用的容器為vector,可以理解為陣列,下面學習如何向這個容器中插入資料,並遍歷這個容器
5.1 vector存放內建的資料型別
容器:vector
演算法:for_each
迭代器:vector::iterator
#include#include#include//標準演算法標頭檔案
using namespace std;
void myprint(int val)
void test01()
////第二種遍歷方式
for (vector::iterator it = v.begin(); it != v.end(); it++)
//第三種遍歷方式
for_each(v.begin(), v.end(), myprint);
}int main()
5.2 vector存放自定義資料型別
學習目標:vector中存放自定義的資料型別,並列印輸出
#include#include#include#include//標準演算法標頭檔案
using namespace std;
class person
string m_name;
int m_age;
};void test01()
}//存放自定義資料型別 指標
void test02()
}int main()
5.3 vector容器巢狀容器
學習目標:容器中巢狀容器,我們將所有資料進行遍歷輸出
#include#includeusing namespace std;
void test01()
//將小容器插入到大容器中
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
v.push_back(v4);
//通過大容器將所有資料遍歷
for (vector>::iterator it = v.begin(); it != v.end(); it++)
cout << endl; }}
int main()
STL學習1初識
stl基本概念 stl從廣義上分為 容器 containter 演算法 algorithm 迭代器 iterator 六大元件 容器 各種資料結構 演算法 各種演算法sort search 迭代器 容器與演算法之間的橋梁,所有容器有自己的專屬迭代器 原生指標也是一種迭代器 仿函式 functors行...
C 之STL(一)初識
standard template library 標準模板庫 容器 演算法 迭代器 仿函式 介面卡 空間配置器 容器和演算法之間通過迭代器進行無縫連線 技術基於模板實現 容器 各種資料結構,vector list deque set map等 演算法 如sort find copy等 迭代器 扮演...
STL 初識STL 系列1
c primer plus 第16章讀書筆記。總結 1.vector 模板 size swap swap yyy begin end 語法 vector iterator pd scores.begin for auto pd scores.begin pd scores.end pd push b...