SGI

不匹配

类别:算法 组件类型:函数

原型

Mismatch是一个重载名称;实际上有两个不匹配函数。
template <class InputIterator1, class InputIterator2>
pair<InputIterator1, InputIterator2> 
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);

template <class InputIterator1, class InputIterator2, 
          class BinaryPredicate>
pair<InputIterator1, InputIterator2> 
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2,
         BinaryPredicate binary_pred);

说明

Mismatch查找两个范围首次不同的位置[first1, last1)[first2, first2 + (last1 - first1))两位的不匹配使用不同的测试来判断元素是否不同。

两者的第一个版本不匹配查找第一个迭代器[first1, last1)使得*i != *(first2 + (i - first1))。返回值是一个对,其第一个元素是,其第二个元素是*(first2 + (i - first1))。如果不存在这样的迭代器,返回值是一个对,其第一个元素是last1,其第二个元素是*(first2 + (last1 - first1)).

的第二个版本不匹配查找第一个迭代器[first1, last1)使得binary_pred(*i, *(first2 + (i - first1))错误。返回值是一个对,其第一个元素是,其第二个元素是*(first2 + (i - first1))。如果不存在这样的迭代器,返回值是一个对,其第一个元素是last1,其第二个元素是*(first2 + (last1 - first1)).

定义

在标准头中定义 algorithm,以及在非标准后向兼容头中定义 algo.h

对类型的要求

对于第一个版本对于第二个版本

条件前提

复杂性

线性。最多last1 - first1比较。

示例

int A1[] = { 3, 1, 4, 1, 5, 9, 3 };
int A2[] = { 3, 1, 4, 2, 8, 5, 7 };
const int N = sizeof(A1) / sizeof(int);

pair<int*, int*> result = mismatch(A1, A1 + N, A2);
cout << "The first mismatch is in position " << result.first - A1 << endl;
cout << "Values are: " << *(result.first) << ", " << *(result.second) << endl;

注意

另请参阅

相等, 搜索, 查找, 查找_if
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc.保留所有权利。 TrademarkInformation