stl即標準模板庫,是指設計好的一系列對通用資料結構進行類模板和函式模板
在標準類模板庫中,所有提供資料常用處理功能的函式模板成為演算法
在標準模板庫中,所有描述資料結構的類模板稱為容器類,容器就是用來存放不同型別資料的資料結構,容器也經常指容器類。
標準模板庫stl中對容器的使用設計以下幾個方面:
(1)容器:儲存資料的類模板的實列物件
(2)迭代器:容器中元素的指標
(3)介面卡:容器類派生出的有其他資料結構特點的類模板的實列物件。
(4)演算法:作用於容器上的處理函式的函式模板。
stl容器與迭代器
容器是用於儲存資料且訪問資料方便,高效的物件。容器分為順序容器和關聯容器
(1)順序容器:容器中的資料有先後順序。順序容器有vector,list,deque
(2)關聯容器:容器中的資料沒有先後順序。關聯容器有set,map等2
順序容器的特點:
vector 內部用連續的儲存空間實現,可以快速訪問,但插入、刪除比較慢(都需要移動元素);
list 內部用雙向鍊錶實現,可快速插入和刪除(只需要修改指標),但是訪問速度較慢(從頭遍歷)。
deque 內部分塊鏈結,區域性是陣列,訪問,插入和刪除介於vector和list之間;
迭代器:容器中類似與元素指標的量來操作容器元素,迭代器有正向迭代器也有逆向迭代器
獲取頭尾迭代器的操作:
c.begin()//指向容器c的頭元素的迭代器值
c.end() //指向容器c的末尾元素最後一位置的迭代器值
c.rbegin()//指向容器c的末尾元素的迭代器值
c.rend() //指向容器c的頭元素前乙個位置迭代器值
迭代器p可以使用p++,++p,p--,--p,p+3,p-2,p+=3,p-=2
順序的容器的常用操作:
操作
作用
可操作容器
c.push_back(x)
將x新增到容器末尾
全部c.push_front(x)
將x新增到容器頭
list,deque
c.insert(p,x)
將x插入迭代器p之前
全部,禁用逆向迭代器
c.erase(p)
刪除迭代器p指向的元素
全部,禁用逆向迭代器
c.erase(b,e)
刪除迭代器b到e之間的元素
全部,禁用逆向迭代器
c.clear()
刪除容器所有元素
全部c.pop_back()
刪除容器末尾的元素
全部c.pop_front()
刪除容器的頭元素的引用
list,deque
c.back()
返回容器末尾元素的引用
全部c.front()
返回容器頭元素的引用
全部c[n]
返回下標n號元素的個數
vector,deque
c.size()
返回容器元素的個數
全部c.max_size()
返回容器最大可能容量
全部 順序容器可以派生出其他型別的資料結構,如棧結構,這種派生出來的新型別是在原有容器基礎上擴充套件或者限制操作而來的,稱為容器介面卡。容器介面卡有deque(佇列),priority_queue(優先順序佇列)和stack(棧)
關聯容器:
關聯容器有map(對映),set(集合),multimap(多重對映),multiset(多重集合)
stl演算法:
stl中的演算法是指常用的作用於各類容器資料的函式模板,演算法通過迭代器對容器中的資料進行操作。
find(b,e,x) 在迭代器b,e之間的元素中查詢x,若查詢成功返回迭代器,若失敗返回e
fill(b,e,x) 將迭代器b到e之間值替換為x
replace(b,e,x,y)將迭代器b,e之間的x替換為y
sort(b,e)將迭代器之間的元素按照公升序排序
sort(b,e,f)將迭代器b,到e之間的元素按照函式物件f定義的次序排列
for_each(b,e,f)遍歷迭代器b到e之間的元素,按照f定義的操作處理
STL程式設計
一 stl的概念 stl standard template library 即標準模板庫,是乙個具有工業強度的,高效的c 程式庫。它被容納於c 標準程式庫 c standard library 中,是ansi iso c 標準中最新的也是極具革命性的一部分。該庫包含了諸多在電腦科學領域裡所常用的基...
STL程式設計題1
問題描述 下面的程式輸出結果是 1 2 6 7 8 9 按從小到大的順序,且沒有重複的 include include 迭代器 include set關聯容器 using namespace std int main 在此處補充你的 關聯容器,不允許有相同元素 setv a,a 7 類模板ostre...
STL之traits程式設計技法
traits程式設計技法利用了 內嵌型別 的程式設計技巧與編譯器的template引數推導功能。下面主要看看利用traits程式設計技法實現的迭代器萃取機制。5種迭代器型別定義 struct input iterator tag struct output iterator tag struct f...