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;
- }