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...