STL(Standard Template Library,標準模板庫)
STL的三大組件:容器(container)、演算法(algorithm)、迭代器(iterator),

STL:六大組件
容器 演算法 迭代器 仿函式 配接器 空間配置器 容器:存放資料 演算法:操作資料 迭代器:容器和演算法的橋梁 仿函式:為演算法 提供更多的策略 配接器:為演算法 提供更多的引數介面 空間配置器:管理容器和演算法的空間演算法分類:
質變演算法:是指運算程序中會更改區間內的元素內容,例如拷貝、替換、洗掉等等, 非質變演算法:是指運算程序中不會更改區間內的元素內容,例如查找、計數、遍歷、尋找極值等等, 迭代器的分類
然后我通過案例來講解:
案例:容器vector
1 #include <iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 void myPrintInt(int val); 6 void test01() 7 { 8 //單端動態陣列vector 類模板 9 vector<int> v;//v就是一個具體的vector容器 10 11 //pash_back 尾部插入 12 v.push_back(100); 13 v.push_back(200); 14 v.push_back(300); 15 v.push_back(400); 16 17 //訪問資料 18 //定義一個迭代器存盤 v的起始迭代器 19 vector<int>::iterator biginIt = v.begin(); 20 //定義一個迭代器存盤 v的結束迭代器 21 vector<int>::iterator endIt = v.end(); 22 23 //for回圈遍歷1 24 for(;biginIt != endIt; biginIt++) 25 { 26 //對迭代器取* 代表的是 容器的元素 27 //*biginIt 28 cout<<*biginIt<<" "; 29 } 30 cout<<endl; 31 32 //for回圈遍歷2(推薦) 33 for(vector<int>::iterator it=v.begin(); it !=v.end(); it++) 34 { 35 cout<<*it<<" "; 36 } 37 cout<<endl; 38 39 //STL提供的演算法來遍歷容器(包含演算法頭檔案 algorithm) 40 //for_each 從容器的起始--->結束 逐個元素取出 41 //myPrintInt 容器資料的列印方式 42 for_each(v.begin(), v.end(), myPrintInt); 43 cout<<endl; 44 } 45 46 void myPrintInt(int val) 47 { 48 cout<<val<<" "; 49 } 50 51 int main(int argc, char *argv[]) 52 { 53 test01(); 54 return 0; 55 }
案例3:容器嵌套容器(了解)
1 void test03() 2 { 3 vector<int> v1; 4 vector<int> v2; 5 vector<int> v3; 6 7 v1.push_back(10); 8 v1.push_back(20); 9 v1.push_back(30); 10 v1.push_back(40); 11 12 v2.push_back(100); 13 v2.push_back(200); 14 v2.push_back(300); 15 v2.push_back(400); 16 17 v3.push_back(1000); 18 v3.push_back(2000); 19 v3.push_back(3000); 20 v3.push_back(4000); 21 22 //需求在定義一個vector容器 存放 v1 v2 v3 23 vector<vector<int>> v; 24 v.push_back(v1); 25 v.push_back(v2); 26 v.push_back(v3); 27 28 //for回圈遍歷 29 for(vector<vector<int>>::iterator it = v.begin(); it!=v.end(); it++) 30 { 31 //*it == vector<int> v1 v2 v3 32 for(vector<int>::iterator mit=(*it).begin(); mit!=(*it).end(); mit++ ) 33 { 34 //*mit ==int 35 cout<<*mit<<" "; 36 } 37 cout<<endl; 38 } 39 }

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47116.html
標籤:C++
上一篇:設計并測驗一個橢圓類 代碼參考
