C++类属性算法equal和mismatch

简介: equal和mismatch算法的功能是比较容器中的两个区间内的元素。这两个算法各有3个参数first1,last1和first2.如果对于区间[first1,last1)内所有的first1+i,first1+i和first2所在位置处的元素都相等,则equal算法返回真,否则返回假。

       equal和mismatch算法的功能是比较容器中的两个区间内的元素。这两个算法各有3个参数first1,last1和first2.如果对于区间[first1,last1)内所有的first1+i,first1+i和first2所在位置处的元素都相等,则equal算法返回真,否则返回假。mismatch算法的返回值是由两个迭代器first1+i和first2+i组成的一个pair,表示第1对不相等的元素的位置。如果没有找到不相等的元素,则返回last1和first2+(last1-first1)。因此,语句

       equal(first1,last1,first2)和mismatch(first1,last1,first2).first==last1是等价的

   

 
 
1 // Illustrating the generic equal and mismatch algorithms
2 #include < iostream >
3 #include < cassert >
4 #include < algorithm >
5 #include < string >
6 #include < list >
7 #include < deque >
8 #include < vector >
9 using namespace std;
10
11 int main()
12 {
13 cout << " Illustrating the generic equal "
14 << " and mismatch algorithms. " << endl;
15 list < string > driver_list;
16 vector < string > vec;
17 deque < string > deq;
18
19 driver_list.insert(driver_list.end(), " Clark " );
20 driver_list.insert(driver_list.end(), " Rindt " );
21 driver_list.insert(driver_list.end(), " Senna " );
22
23 vec.insert(vec.end(), " Clark " );
24 vec.insert(vec.end(), " Rindt " );
25 vec.insert(vec.end(), " Senna " );
26 vec.insert(vec.end(), " Berger " );
27
28 deq.insert(deq.end(), " Clark " );
29 deq.insert(deq.end(), " Berger " );
30
31 // Show that driver_list and the first 3 elements of
32 // vec are equal in all corresponding positions:
33 assert (equal(driver_list.begin(), driver_list.end(),
34 vec.begin()));
35
36 // Show that deq and the first 2 elements of driver_list
37 // are not equal in all corresponding positions:
38 assert ( ! equal(deq.begin(), deq.end(),
39 driver_list.begin()));
40
41 // Find the corresponding positions in deq and driver_list
42 // at which unequal elements first occur:
43 pair < deque < string > ::iterator, list < string > ::iterator >
44 pair1 = mismatch(deq.begin(), deq.end(),
45 driver_list.begin());
46
47 if (pair1.first != deq.end())
48 cout << " First disagreement in deq and driver_list:\n "
49 << * (pair1.first) << " and " << * (pair1.second)
50 << endl;
51 return 0 ;
52 }
相关文章
|
22天前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
31 4
|
23天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
21 4
|
23天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4
|
23天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1
|
29天前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
333 0
高精度算法(加、减、乘、除,使用c++实现)
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)
|
1月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
51 1
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
18 1
|
1月前
|
C++
C++番外篇——日期类的实现
C++番外篇——日期类的实现
79 1
下一篇
无影云桌面