編程第五十八、五十九天

c++ algorithm頭文件 基本算法

  1. #include <iostream>  
  2. #include <algorithm>  
  3. #include <vector>  
  4.   
  5. using namespace std;  
  6.   
  7. template<typename T>  
  8. struct display  
  9. {  
  10.     void operator()(const T  &x)const  
  11.     {  
  12.         cout<<x<<" ";  
  13.     }  
  14.       
  15. };  
  16.   
  17.   
  18. int main()  
  19. {  
  20.     int ia[]={0,1,2,3,4,5,6,7,8};  
  21.     vector<int> iv1(ia,ia+5);  
  22.     vector<int> iv2(ia,ia+9);  
  23.       
  24.     pair<vector<int>::iterator,vector<int>::iterator> pa;  
  25.     pa=mismatch(iv1.begin(),iv1.end(),iv2.begin());  
  26.     cout<<"兩個數組不同點--第一個數組點:"<<*(pa.first)<<endl; //這樣寫很危險,應該判斷是否到達end   
  27.     cout<<"兩個數組不同點--第二個數組點:"<<*(pa.second)<<endl;  
  28.       
  29.     //更改之後  
  30.     if(pa.first == iv1.end())  
  31.         cout<<"第一個數組與第二個數組匹配"<<endl;   
  32.           
  33.     cout<<equal(iv1.begin(),iv1.end(),iv2.begin())<<endl;// 1 表示 相等,因爲只比較跟 iv1長度大小的數組   
  34.     cout<<equal(iv1.begin(),iv1.end(),&ia[3])<<endl;// 0 表示 不相等   
  35.     cout<<equal(iv1.begin(),iv1.end(),&ia[3],less<int>())<<endl;// 1 表示 前者小於後者  
  36.       
  37.     fill(iv1.begin(),iv1.end(),9);//將iv1區間內填滿 9  
  38.     for_each(iv1.begin(),iv1.end(),display<int>());  
  39.     cout<<endl;     
  40.       
  41.     fill_n(iv1.begin(),3,6);//從iv1區間開始填 3個6   
  42.     for_each(iv1.begin(),iv1.end(),display<int>());  
  43.     cout<<endl;  
  44.       
  45.       
  46.     vector<int>::iterator ite1=iv1.begin();  
  47.     vector<int>::iterator ite2=ite1;  
  48.     advance(ite2,3);//向前跳3個  
  49.       
  50.     iter_swap(ite1,ite2);//交換迭代器指向的元素  
  51.     for_each(iv1.begin(),iv1.end(),display<int>());  
  52.        
  53.     cout<<"\nmax:"<<max(*ite1,*ite2)<<endl;  
  54.     cout<<"min:"<<min(*ite1,*ite2)<<endl;  
  55.       
  56.     swap(*ite1,*ite2);  
  57.     for_each(iv1.begin(),iv1.end(),display<int>());  
  58.       
  59.       
  60.     cout<<endl;  
  61.     string stra1[]={"a","b","c"};  
  62.     string stra2[]={"d","e","f"};  
  63.       
  64.     cout<<lexicographical_compare(stra1,stra1+2,stra2,stra2+2)<<endl;//按照字典序 前者小於後者   
  65.     cout<<lexicographical_compare(stra1,stra1+2,stra2,stra2+2,greater<string>())<<endl;//按照字典序 前者不大於後者  
  66.       
  67.           
  68.     return 0;  
  69. }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章