C++STL与泛型编程(2) 第一个C++ STL Application
生活随笔
收集整理的這篇文章主要介紹了
C++STL与泛型编程(2) 第一个C++ STL Application
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- STL六大部件
- STL六大部件代碼示例
- 時間復雜度
- 前閉后開區間
- auto關鍵字的用法
STL六大部件
容器
分配器
算法
迭代器
適配器
仿函數
容器要放東西,東西要占用內存,分配器可支持容器解決內存問題。算法處理容器中的數據。迭代器是容器和算法之間的橋梁。迭代器是泛化的指針。仿函數作用就像是一個函數。適配器可以對一些部件進行轉換,例如,迭代器適配器,容器適配器,仿函數適配器。
STL六大部件代碼示例
#include<vector> #include<algorithm> #include<functional> #include<iostream>using namespace std;int main(){ int ia[6]={27,210,12,47,109,83}; //vector 是一個容器,第一個參數是容器中存放的數據類型,第二個參數是一個分配器 //第二個參數可不寫,此時會選擇默認的分配器 //分配器也是一個模板,需要指定其分配的類型,例如本例中的int //容器中數據的類型應與分配器中的類型一致 vector<int,allocator<int>>vi(ia,ia+6);//<count_if()是算法 //vi.begin(),vi.end()是迭代器 //not1()是一個仿函數適配器,表示否定,即該count_if函數表示的是容器中大于等于40的個數 //bind2nd()是一個仿函數適配器,綁定第二參數 //less<int>()是仿函數 cout<<count_if(vi.begin(),vi.end(),not1(bind2nd(less<int>(),40)));system("pause"); return 0; }輸出結果:
4時間復雜度
前閉后開區間
標準庫規定,容器頭尾是前閉后開區間,容器不一定是連續空間
下圖中對容器進行遍歷的程序中,Container替換成任意容器即可,
每一個容器的迭代器都有其自己的類型,其寫法如下:
遍歷容器的示例一:
for(;ite!=c.end();++ite)...遍歷容器的示例二:
//c是容器 for(auto elem:c)... //如果我們對容器中的數據進行修改,寫法可如下: for(auto& elem:c)elem*=3;auto關鍵字的用法
總結
以上是生活随笔為你收集整理的C++STL与泛型编程(2) 第一个C++ STL Application的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中原银行信用卡激活需要去银行吗?取决于申
- 下一篇: c++面向对象高级编程 学习八 non-