基本算法

#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
#include <functional>

using namespace std;

template <class T>
struct display{
 void operator()(const T& x){
  cout<<x<<" ";
 }
};

int main(){
 int a[9] = {0,1,2,3,4,5,6,7,8};
 
 vector<int> v1(a,a + 5);
 vector<int> v2(a,a + 9);
 
 pair<vector<int>::iterator,vector<int>::iterator>  result;
 result  = mismatch(v1.begin(),v1.end(),v2.begin());

 if(result.first == v1.end())
  cout<<"The two ranges do not differ!"
    <<endl;
 else
  cout<<"The difference of two ranges is "
     <<*(result.second)
     <<endl;

 //区间内全部填9
 fill(v1.begin(),v1.end(),9);
 for_each(v1.begin(),v1.end(),display<int>());//9 9 9 9 9
 cout<<endl;

 fill_n(v1.begin(),3,7);//注意3为v1的前三位用7覆盖,这个值应该小于5, 也就是v.size()
 for_each(v1.begin(),v1.end(),display<int>());//7 7 7 9 9
 cout<<endl;

 vector<int>::iterator it1 = v1.begin();
 vector<int>::iterator it2 = it1;
 advance(it2,3);
 iter_swap(it1,it2);
 cout<<*it1<<" "<<*it2<<endl;//9 7
 for_each(v1.begin(),v1.end(),display<int>());//9 7 7 7 9
 cout<<endl;

 cout<<max(*it1,*it2)<<endl;//9
 cout<<min(*it1,*it2)<<endl;//7

 //下面计算的是迭代器本身大小,这是没有意义的
 cout<<*max(it1,it2)<<endl;//7
 cout<<*min(it1,it2)<<endl;//9

 
 swap(*v1.begin(),*v2.begin());
 for_each(v1.begin(),v1.end(),display<int>());//0 7 7 7 9
 cout<<endl;
 for_each(v2.begin(),v2.end(),display<int>());//9 1 2 3 4 5 6 7 8
 cout<<endl;

 修改v2以后,在进行比较
 //vector<int>::iterator p = v2.begin();
 //v2.insert(p+3,9);
 //pair<vector<int>::iterator,vector<int>::iterator>  result2;
 //result2  = mismatch(v1.begin(),v1.end(),v2.begin());
 //if(result2.first == v1.end())
 // cout<<"The two ranges do not differ!"
 // <<endl;
 //else
 // cout<<"The difference of two ranges is "
 // <<*(result2.second)
 // <<endl;

 string str1[] = {"Jamie","JJHou","Jason"};
 string str2[] = {"Jamie","JJhou","Jerry"};
 
 cout<<lexicographical_compare(str1,str1+2,str2,str2+2)<<endl;//1
 cout<<lexicographical_compare(str1,str1+2,str2,str2+2,greater<string>())<<endl;//0

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值