一、函數模板
#include<iostream> #include<string> using namespace std; template<class T> T min(T a[],int n) { int i; T minv=a[0]; for(i=1;i<n;i++) { if(minv>a[i]) minv=a[i]; } return minv; } int main() { int a[]={1,3,0,2,7,6,4,5,2}; double b[]={1.2,-3,4,6.8}; cout<<"a數組的最小值為"<<min(a,9)<<endl; cout<<"b數組的最小值為"<<min(b,4)<<endl; return 0; }
這樣做,省去了不同類型間比較的麻煩,相當於新建了一個模板來裝之前的各種類型
二、類模板
三、stl簡介
1、vector 簡單知識
四、vector
#include<iostream> #include<vector> using namespace std; int main() { vector<int>v1; v1.push_back(1); v1.push_back(2); //尾部插入 v1.insert(v1.begin() ,0);//頭部插入 v1.insert(v1.end() ,4);//尾部插入 v1.insert(v1.end()-1,3);//倒數第二位置 v1[4]=10; for(int i=0;i<v1.size();i++) cout<<v1[i]<<" "; return 0; // }
#include<iostream> #include<vector> using namespace std; int main() { vector<int>v1; v1.push_back(1); v1.push_back(2); //尾部插入 v1.insert(v1.begin() ,0);//頭部插入 v1.insert(v1.end() ,4);//尾部插入 v1.insert(v1.end()-1,3);//倒數第二位置 v1[4]=10; v1.pop_back();//刪除末尾值 v1.erase(v1.begin(),v1.end());//刪除全部值 for(int i=0;i<v1.size();i++) cout<<v1[i]<<" "; return 0; // }
2、vector迭代器
#include<iostream> #include<vector>//載入庫 using namespace std; int main() { vector<int>v1; for(int i=1;i<10;i++) v1.push_back(i); vector<int>::iterator it;//迭代器 for(it=v1.begin();it<v1.end();it++) if(*it%2==0) cout<<*it<<" "; return 0; // }
注意迭代器加星號指代的是向量的內容,不加星號指向量的坐標。
#include<iostream> #include<vector>//載入庫 using namespace std; int main() { vector<int>v1(4,0); vector<int>v2(3,1); v1.insert(v1.begin(),5); v1.insert(v1.end(),7); vector<int>::iterator it=v1.begin()+4; v1.insert(it,9); for(it=v1.begin();it<v1.end();) { if(*it%2==0) it=v1.erase(it);//刪除了之后,還留在原位置 else it++; //向后進行 } v2.insert(v2.begin(),v1.begin(),v1.begin()+2);//v1.begn()+2是指結束標志,所以就是將v1的兩個值添加到v2的頭部。 for(int i=0;i<v2.size();i++) cout<<v2[i]<<" "; return 0; // }
#include<iostream> #include<vector>//載入庫 using namespace std; int main() { vector<int>v1(4,0); vector<int>v2(3,1); v1.insert(v1.begin(),5); v1.insert(v1.end(),7); vector<int>::iterator it=v1.begin()+4; v1.insert(it,9); for(it=v1.begin();it<v1.end();++it) { if(*it%2==0) it=v1.erase(it);//刪除了之后,還留在原位置 //else //it++; //向后進行 } for(int i=0;i<v1.size();i++) cout<<v1[i]<<" "; cout<<endl; v2.insert(v2.begin(),v1.begin(),v1.begin()+2); for(int i=0;i<v2.size();i++) cout<<v2[i]<<" "; return 0; // }
it++,得到這樣的結果,
3、應用算法
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int>v(5,3); vector<int>::iterator p; p=find(v.begin(),v.end(),3); cout<<p; if(p!=v.end()) cout<<*p<<endl; p=find(v.begin(),v.end(),5); if(p==v.end()) cout<<"not find\n"; return 0; }
#include<iostream> #include<vector> #include<algorithm> #include<string> using namespace std; int main() { vector<string>v; v.push_back("food"); v.push_back("candy"); v.push_back("apple"); sort(v.begin(),v.end()); vector<string>::iterator it; for(it=v.begin();it!=v.end();it++) { cout<<*it<<" "; } return 0; }
#include<iostream> #include<vector> #include<algorithm> #include<string> using namespace std; int main() { int a[]={10,5,15,20,25}; int b[]={50,40,30,20,10}; vector<int>v(10); vector<int>::iterator it; sort(a,a+5); for(int i=0;i<5;i++) { cout<<a[i]<<" "; } cout<<endl; sort(b,b+5); merge(a,a+5,b,b+5,v.begin()); for(it=v.begin();it!=v.end();it++) { cout<<*it<<" "; } return 0; }
四、map容器