C++ 算法 mismatch() 函数比较两个容器以发现任何不匹配的值。该函数返回不匹配的两个容器的第一个元素。
用法
template<class InputIterator1, classInputIterator2>
pair<InputIterator1, InputIterator2> mismatch(InputIterator1 first1, InputIterator2 first2>
template<class InputIterator1, class InputIterator2, class BinaryPredicate> pair<InputIterator1,InputIterator2>
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2,BinaryPredicate pred);
参数
first1:它是[first1,last1)第一个元素的输入迭代器。
last1:它是[first1,last1)最后一个元素的输入迭代器。
first2:它是[first2,last2)第一个元素的输入迭代器。
pred: 它是一个二元函数,它接受两个元素作为参数并执行函数设计的任务。
返回值
如果该函数找到一对不匹配的元素,则它返回第一对这样的元素,每个容器中的一个。
如果容器中的元素均不匹配,则该函数返回对 (first1, first2)
如果该对中的整个元素匹配,则该函数返回一对 last1 和与第二个容器中的 last1 具有相同各自位置的元素。
例子1
#include<iostream>
#include<algorithm>
#include<vector>
#include<utility>
bool newpredicate(int m, int n)
{
return(m==n);
}
int main()
{
std::vector<int> newvector;
for (int m=1; m<6; m++)
newvector.push_back(m*10);
int newints[]={10,20,80,320,1024};
std::pair<std::vector<int>::iterator,int*> newpair;
newpair=std::mismatch(newvector.begin(),newvector.end(),newints);
std::cout<<"Out of the given elements the first mismatching pair is:"<<*newpair.first;
std::cout<<" and "<<*newpair.second<<"\n";
++newpair.first; ++newpair.second;
newpair=std::mismatch(newpair.first, newvector.end(),newpair.second, newpredicate);
std::cout<<"The next pair of mismatching elements are:"<<*newpair.first;
std::cout<<" and "<<*newpair.second<<"\n";
return 0;
}
输出:
Out of the given elements the first mismatching pair is:30 and 80 The next pair of mismatching elements are:40 and 320
例子2
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool comp(int c, int d)
{
return (c>d);
}
int main()
{
vector<int> u1 = { 23, 13, 15, 20 };
vector<int> u2 = { 1, 10, 25, 30, 45 };
vector<int> u3 = { 12, 100, 152, 204 };
vector<int> u4 = { 1, 10, 15, 20, 24 };
pair< vector<int>::iterator,
vector<int>::iterator > unpair;
unpair = mismatch(u1.begin(), u1.end(), u2.begin());
cout << "From the first container the element that does not match is:";
cout << *unpair.first << endl;
cout << " From the second container the element that does not match container is:";
cout << *unpair.second << endl;
unpair = mismatch(u3.begin(), u3.end(), u4.begin());
cout << "From first container return value is:";
cout << *unpair.first << endl;
cout << " From second container return value is:";
cout << *unpair.second << endl;
}
输出:
From the first container the element that does not match is:23 From the second container the element that does not match container is:1 From firt container return value is:12 From second container return value is:1
复杂度
该函数从 first1 元素到 last1 元素具有线性复杂度。
数据竞争
访问两个范围内的对象。
异常
如果任何参数抛出异常,该函数将抛出异常。
相关用法
- C++ map lower_bound()用法及代码示例
- C++ multimap key_comp()用法及代码示例
- C++ merge()用法及代码示例
- C++ multimap empty()用法及代码示例
- C++ multimap cend()用法及代码示例
- C++ multiset begin()、end()用法及代码示例
- C++ map::at()用法及代码示例
- C++ multiset value_comp()用法及代码示例
- C++ multimap insert()用法及代码示例
- C++ map max_size()用法及代码示例
- C++ multiset emplace()用法及代码示例
- C++ multiset lower_bound()用法及代码示例
- C++ multimap lower_bound()用法及代码示例
- C++ multiset crbegin()、crend()用法及代码示例
- C++ multimap rend()用法及代码示例
- C++ map begin()用法及代码示例
- C++ map rbegin()用法及代码示例
- C++ multiset insert()用法及代码示例
- C++ multiset max_size()用法及代码示例
- C++ map::clear()用法及代码示例
注:本文由纯净天空筛选整理自 C++ Algorithm Functions mismatch()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。