STL_mismatch ,equal 的用法

//mismatch 和 equal 都是比较两个区间内的元素,各有三个参数first1,last1,first2, 
//对于【first1,last1)内所有位置first1+i,first1+i和first2+i所在位置处的元素相等 ,equal 返回true。

//pair 返回值是由first1 + i 和 first2 + i组成的一个pair,表示第一对不等元素的位置,如果没有找到不相等的元素,则返回last1 和 first2 + (last1 - first1)

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <list>
#include <deque>
#include <vector>
using namespace std;
int main()
{
  list <string>driver_list;
  vector <string>driver_vec;
  deque <string> deq;
  driver_list.insert(driver_list.end(),"zhao");
  driver_list.insert(driver_list.end(),"bb");
  driver_list.insert(driver_list.end(),"cc");
   driver_vec.insert(driver_vec.end(),"zhao");
  driver_vec.insert(driver_vec.end(),"bb");   
 driver_vec.insert(driver_vec.end(),"cc");        //当这行被注释掉后,也就是equal第三个参数first2中,数据个数比first1少,那么first2中对迭代器的引用会超出范围
   deq.insert(deq.end(),"zhao");                         //first1 的长度要《= fisrt2的长度
   deq.insert(deq.end(),"bbbbbb");

   if (equal(driver_list.begin(),driver_list.end(),driver_vec.begin()))
   {
	   printf("对于【first1,last1)内所有位置first1+i,first1+i和first2+i所在位置处的元素相等\n");
   }
   //mismatch 返回pair类型,他有两个数据成员,first,last,且它们的类型可以不同
   //所以可知  equal(first1,last1,first2) 和 mismatch(first1,last1,first2) .first ==  last1是等价的
   pair <deque <string> ::iterator,list<string>::iterator >pair1 = mismatch(deq.begin(),deq.end(),driver_list.begin());
  if(pair1.first != deq.end())
  {
	  cout <<*(pair1.first)<<"   and        "<<*(pair1.second)<<endl;
  }
  return 0;
}
mismatch 参数长度要求和equal一样,必须是后边参数长度长。。。


参考资料:http://www.2cto.com/kf/201110/107320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值