c (標準模板庫STL)

2021-09-21 14:49:22 字數 1505 閱讀 9067

stl是一種泛型程式設計(generic programming)

容器主要有以下分類:

例如:容器的成員函式begin()返回指向容器中第乙個元素的迭代器;end()返回指向容器中最後乙個元素後繼位置的迭代器。

下面通過stl中提供的乙個泛型函式find()來說明迭代器與泛型演算法的關係:

首先看下stl對於find函式的內部實現:

template input_iterator_tag find(input_iterator_tag first,input_iterator_tag last,const t value)

return last;

}

注意:

然後在應用程式中測試:

#include #include using namespace std;

int main()

; int *result,value;

cout << "please input the num you want to search:" ;

cin>>value;

result = find(num,num+5,value); //注意這裡模板引數被特化為int *

if(result == num+5)

cout<

else

cout<

結合find()函式的原始碼可以知道,泛型演算法不直接訪問容器的的元素,與容器無關。元素的全部訪問和遍歷都通過迭代器實現,並不需要知道容器的型別。

每種容器都有自己支援的迭代器型別,迭代器決定了可採用哪種演算法。vector支援隨機訪問迭代器,能直接訪問容器中的任意元素,功能比較強大。選擇所需容器類實際上很大部分是選擇所支援的迭代器。

下面通過乙個簡單的demo演示vector類的應用:

#include #include #include using namespace std;

int main()

; int i;

//構造乙個向量

vectordvector(values,values+7);

cout<

for(i=0;i::iterator itr = dvector.begin();

dvector.insert(itr+1,55);

dvector.insert(itr+1,66);

dvector.insert(dvector.begin()+1,0); //這個用法和上面的用法一樣

cout<

for(i=0;i執行結果:

更多vector類的成員函式可以訪問:

C 標準模板庫STL

stl是標準c 庫的一部分。stl模板類為c 提供了完善的資料結構和演算法。stl的特點 型別引數化 即stl的 中可處理任意自定義型別的物件。泛型程式設計 generic programming 它以模板為基礎,弱化了 實體型別的差異,簡化了程式設計時問題抽象的模型,提供了更好的 封裝性和彈性。s...

C 標準模板庫STL

stl 標準模板庫 包括容器,演算法,迭代器 容器用來儲存資料,比如vector,list,堆疊等,string也算 一共有八個 演算法就是對容器進行操作,比如增刪改查資料 迭代器用來遍歷容器itreator 用指標的方式來遍歷容器的資料 注 平時使用的時候大部分時候我們都用上了,但是面試的時候不能...

C 標準模板庫(STL)

c 原先的標準模板庫容器包括 deque,list,queue,priority queuem stack,vector,map,multimap,set,multiset,bitset c 11將bitset從容器分類移去了單獨分類,並且新增了 unordered map,unordered mu...