📅  最后修改于: 2020-10-16 14:08:19             🧑  作者: Mango
C++ STL algorithm.mismatch()函数比较两个容器以发现值是否不匹配。该函数返回两个不匹配的容器的第一个元素。
template
pair mismatch(InputIterator1 first1, InputIterator2 first2>
template pair
mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2,BinaryPredicate pred);
first1:它是[first1,last1)的第一个元素的输入迭代器。
last1:它是[first1,last1)的最后一个元素的输入迭代器。
first2:它是[first2,last2)的第一个元素的输入迭代器。
pred:它是一个二进制函数,接受两个元素作为参数并执行该函数设计的任务。
如果函数发现一对不匹配的元素,则它将返回第一对这样的元素,每个容器中都有一个。
如果容器中的所有元素都不匹配,则该函数返回对(first1,first2)
如果该对中的整个元素匹配,则该函数将对last1和具有相同位置的元素返回到第二个容器中的last1。
#include
#include
#include
#include
bool newpredicate(int m, int n)
{
return(m==n);
}
int main()
{
std::vector newvector;
for (int m=1; m<6; m++)
newvector.push_back(m*10);
int newints[]={10,20,80,320,1024};
std::pair::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
#include
#include
#include
using namespace std;
bool comp(int c, int d)
{
return (c>d);
}
int main()
{
vector u1 = { 23, 13, 15, 20 };
vector u2 = { 1, 10, 25, 30, 45 };
vector u3 = { 12, 100, 152, 204 };
vector u4 = { 1, 10, 15, 20, 24 };
pair< vector::iterator,
vector::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元素具有线性复杂度。
访问两个范围中的对象。
如果任何参数抛出一个异常,该函数将引发异常。