容器是一種資料結構,演算法通過迭代器對容器中資料進行訪問,形成資料結構+演算法的程式結構。
容器通過模板可以將型別提煉出來實現泛型,用以儲存不同型別物件的類成為了容器。同一容器儲存同一型別的物件,當容器被銷毀時,容器中的物件也會被銷毀。
stl庫提供了一些常用的容器型別,順序容器:vector、list、deque;關聯容器:set、map。
vector
vector是陣列的一種類表示,提供了自動記憶體管理功能,可以動態的改變vector物件的長度,vector的長度隨著元素的新增和刪除而增大和縮小。vector提供了對元素的隨機訪問。
vector的基本函式:
1、構造
2、增加
3、刪除
4、遍歷
5、長度
6、賦值
vector還是可反轉容器
list
list :雙向鍊錶。除頭尾元素外的元素與前後元素相連,可以雙向遍歷鍊錶。在鍊錶中插入新元素並不會移動已有的元素,而只是修改連線資訊,指向某個元素的迭代器依舊指向該元素,但它的鏈結元素可能與以前不同。
list的基本函式:
1、構造
2、其他
增加、刪除、遍歷、長度等基本與vector一致,list也是可反轉容器
deque
deque:雙端佇列,類似於vector,支援隨機訪問,從兩端插入元素的時間固定。
基本函式
1、構造
2、增加、刪除、遍歷、長度等基本與vector一致
3、可使用sort()進行排序
setset是最簡單的關聯容器。
關聯容器:將值與鍵關聯在一起,依靠鍵來查詢值。通常是使用某種樹實現。
set的值型別與鍵相同,鍵是唯一的。對於set而言,值就是鍵。
基本函式
1、支援基本容器的操作函式
2、數學操作
mapmap中的鍵唯一,主要用於一一對映的模型,map內部的實現自建一顆紅黑樹,這顆樹具有對資料自動排序的功能,在map內部所有的資料都是有序的。
基本函式
1、支援基本容器的操作函式
2、訪問容器中的元素需要通過迭代器進行,迭代器是演算法與容器交流的橋梁。迭代器指向容器中元素,可以通過它來進行讀寫操作。指標就是一類迭代器。
迭代器按照定義方式分成以下四種。
//正向迭代器
容器類名::iterator 迭代器名;//
常量正向迭代器
容器類名::const_iterator 迭代器名;//
反向迭代器
容器類名::reverse_iterator 迭代器名;//
常量反向迭代器
容器類名::const_reverse_iterator 迭代器名;
用法*迭代器名:指向的元素,非常量型別可以寫入
迭代器名++ /++迭代器名:迭代器會指向容器中的前或後乙個元素,前後取決於迭代器型別。
正向迭代器支援++p
,p++
,*p
。此外,兩個正向迭代器可以互相賦值,還可以用==
和!=
運算子進行比較。
雙向迭代器具有正向迭代器的全部功能。除此之外,若 p 是乙個雙向迭代器,則--p
和p--
都是有定義的。--p
使得 p 朝和++p
相反的方向移動。
隨機訪問迭代器具有雙向迭代器的全部功能, 還支援以下操作:
迭代器的函式模板(algorithm標頭檔案)
演算法即對容器進行操作的非成員函式,演算法函式使用模板來提供泛型,使用迭代器來訪問容器中的資料,
stl演算法庫包含了非修改式序列操作、修改式序列操作和排序和相關操作的演算法函式,位於標頭檔案algorithm中,還包含通用數字運算,在標頭檔案numeric中。
c 容器演算法迭代器初識 容器演算法迭代器
c 容器演算法迭代器初識 容器演算法迭代器 stl中最常用的為迭代器vector,可以理解為陣列,下面我們將學習如何向這個容器 中插入資料 並遍歷這個容器 容器 vector 演算法 for each 迭代器 vector iteator include include include using ...
C STL 迭代器 容器 演算法
stl standardtemplatelibrary 即標準模板庫,是乙個具有工業強度的,高效的c 程式庫。它被容納於c 標準程式庫 c standardlibrary 中。該庫包含了諸多在電腦科學領域裡所常用的基本資料結構和基本演算法。為廣大c 程式設計師們提供了乙個可擴充套件的應用框架,高度體...
容器,演算法,迭代器初識
stl 最常用的是容器是vector,可以理解為陣列。vector存放內建資料型別 容器 vector 演算法 for each 迭代器 vector iterator 標準演算法標頭檔案 include include using namespace std include include 標準演...