Algorithm Mismatch Function - C++ Programming Tutorial
C++ Course / STL Algorithm / Algorithm Mismatch Function

Algorithm Mismatch Function

BLUF: Mastering Algorithm Mismatch Function is a critical step in becoming a proficient C++ developer. This lesson provides a deep dive into the syntax, performance considerations, and real-world applications of this concept.
Key Performance Insight: Algorithm Mismatch Function

C++ is renowned for its efficiency. Learn how Algorithm Mismatch Function enables low-level control and high-performance computing in the tutorial below.

The mismatch function in C++ Algorithm compares two containers to identify any differences in values. It returns the first element in each container that does not match.

Syntax

Example

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);

Parameter

It serves as an input iterator pointing to the initial element within the range of [first1, last1).

It serves as an input iterator pointing to the final element within the range of [first1, last1).

It serves as an input iterator pointing to the initial element within the range [first2, last2).

pred : It is a binary function that takes in two elements as parameters and executes the specific operation defined within the function.

Return value

If the function detects a mismatch in a pair of elements, it will return the initial pair of such elements, one from each respective container.

If none of the items within the containers correspond with each other, the function will output the pair (first1, first2).

If the whole element in the pair matches, the function will output a pair consisting of last1 and the element located at the corresponding position to last1 in the second container.

Example 1

Example

#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;
}

Output:

Output

Out of the given elements the first mismatching pair is: 30 and 80
The next pair of mismatching elements are: 40 and 320

Example 2

Example

#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;
   }

Output:

Output

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

Complexity

The function exhibits a linear time complexity from the initial element to the final element.

Data races

Objects in both ranges are accessed.

Exceptions

The function will raise an exception if any of its arguments also throws an exception.

Input Required

This code uses input(). Please provide values below:

Logic Practice
Install Logic Practice
Add to home screen for a faster app-like experience