c++ algorithm頭文件 基本算法
- #include <iostream>
- #include <algorithm>
- #include <vector>
- using namespace std;
- template<typename T>
- struct display
- {
- void operator()(const T &x)const
- {
- cout<<x<<" ";
- }
- };
- int main()
- {
- int ia[]={0,1,2,3,4,5,6,7,8};
- vector<int> iv1(ia,ia+5);
- vector<int> iv2(ia,ia+9);
- pair<vector<int>::iterator,vector<int>::iterator> pa;
- pa=mismatch(iv1.begin(),iv1.end(),iv2.begin());
- cout<<"兩個數組不同點--第一個數組點:"<<*(pa.first)<<endl; //這樣寫很危險,應該判斷是否到達end
- cout<<"兩個數組不同點--第二個數組點:"<<*(pa.second)<<endl;
- //更改之後
- if(pa.first == iv1.end())
- cout<<"第一個數組與第二個數組匹配"<<endl;
- cout<<equal(iv1.begin(),iv1.end(),iv2.begin())<<endl;// 1 表示 相等,因爲只比較跟 iv1長度大小的數組
- cout<<equal(iv1.begin(),iv1.end(),&ia[3])<<endl;// 0 表示 不相等
- cout<<equal(iv1.begin(),iv1.end(),&ia[3],less<int>())<<endl;// 1 表示 前者小於後者
- fill(iv1.begin(),iv1.end(),9);//將iv1區間內填滿 9
- for_each(iv1.begin(),iv1.end(),display<int>());
- cout<<endl;
- fill_n(iv1.begin(),3,6);//從iv1區間開始填 3個6
- for_each(iv1.begin(),iv1.end(),display<int>());
- cout<<endl;
- vector<int>::iterator ite1=iv1.begin();
- vector<int>::iterator ite2=ite1;
- advance(ite2,3);//向前跳3個
- iter_swap(ite1,ite2);//交換迭代器指向的元素
- for_each(iv1.begin(),iv1.end(),display<int>());
- cout<<"\nmax:"<<max(*ite1,*ite2)<<endl;
- cout<<"min:"<<min(*ite1,*ite2)<<endl;
- swap(*ite1,*ite2);
- for_each(iv1.begin(),iv1.end(),display<int>());
- cout<<endl;
- string stra1[]={"a","b","c"};
- string stra2[]={"d","e","f"};
- cout<<lexicographical_compare(stra1,stra1+2,stra2,stra2+2)<<endl;//按照字典序 前者小於後者
- cout<<lexicographical_compare(stra1,stra1+2,stra2,stra2+2,greater<string>())<<endl;//按照字典序 前者不大於後者
- return 0;
- }