C++ STL tiene muchas funciones útiles que nos ayudan a realizar diversas tareas de programación. Una de esas funciones es “ mismatch() ”. Esta función, definida en el archivo de encabezado » algoritmo «, ayuda a comparar 2 contenedores en busca de discrepancias . Esta función tiene 2 versiones. Ambos se discuten en este artículo.
- desajuste (start_iter1, end_iter1, start_iter2) Esta versión de desajuste solo prueba la desigualdad .
Aquí, hay 3 argumentos,
start_iter1: iterador inicial hasta el primer contenedor
end_iter1: último iterador hasta el 1er contenedor
start_iter2: iterador inicial hasta el segundo iterador desde donde se desea que comience la comparación.Esta función devuelve el primer puntero de par de desajuste , el primer elemento apunta a la posición del primer elemento de desajuste del 1.er contenedor, el segundo elemento apunta a la posición del primer elemento de desajuste del 2.º contenedor. Si no se encuentra ninguna discrepancia, el primer elemento apunta a la posición después del último elemento del primer contenedor y el segundo apunta a la posición correspondiente en el segundo contenedor .
// C++ code to demonstrate the working of
// mismatch( start_iter1, end_iter1, start_iter2 )
#include<iostream>
#include<algorithm>
#include<vector>
using
namespace
std;
int
main()
{
// initializing vectors
vector<
int
> v1 = { 1, 10, 15, 20 };
vector<
int
> v2 = { 1, 10, 25, 30, 45 };
vector<
int
> v3 = { 1, 10, 15, 20 };
vector<
int
> v4 = { 1, 10, 15, 20, 24 };
// declaring pointer pair
pair< vector<
int
>::iterator,
vector<
int
>::iterator > mispair;
// using mismatch() to search for 1st mismatch
mispair = mismatch(v1.begin(), v1.end(), v2.begin());
// printing the mismatch pair
// 1st mismatch at 15 and 25
cout <<
"The 1st mismatch element of 1st container : "
;
cout << *mispair.first << endl;
cout <<
"The 1st mismatch element of 2nd container : "
;
cout << *mispair.second << endl;
// using mismatch() to search for 1st mismatch
mispair = mismatch(v3.begin(), v3.end(), v4.begin());
// printing the mismatch pair
// no mismatch
// points to position after last 0 and corresponding 24
cout <<
"The returned value from 1st container is : "
;
cout << *mispair.first << endl;
cout <<
"The returned value from 2nd container is : "
;
cout << *mispair.second << endl;
}
Producción:
The 1st mismatch element of 1st container : 15 The 1st mismatch element of 2nd container : 25 The returned value from 1st container is : 0 The returned value from 2nd container is : 24
- desajuste (start_iter1, end_iter1, start_iter2, comparador): esta función es casi similar al funcionamiento de la versión mencionada anteriormente, pero ofrece encontrar no solo desajustes de igualdad, sino también otros desajustes deseados y definidos por el usuario a través de la función de comparación definida por el usuario que se envía como cuarto argumento y devuelve un valor booleano verdadero o falso.
// C++ code to demonstrate the working of
// mismatch( start_iter1, end_iter1, start_iter2, comparator )
#include<iostream>
#include<algorithm>
#include<vector>
using
namespace
std;
// comparator function
// returns true when element from
// 1st element is greater than 2nd
bool
compare(
int
a,
int
b)
{
return
(a>b);
}
int
main()
{
// initializing vectors
vector<
int
> v1 = { 23, 13, 15, 20 };
vector<
int
> v2 = { 1, 10, 25, 30, 45 };
vector<
int
> v3 = { 12, 100, 152, 204 };
vector<
int
> v4 = { 1, 10, 15, 20, 24 };
// declaring pointer pair
pair< vector<
int
>::iterator,
vector<
int
>::iterator > mispair;
// using mismatch() to search for 1st mismatch
mispair = mismatch(v1.begin(), v1.end(), v2.begin(), compare);
// printing the mismatch pair
// 1st mismatch at 15 and 25
// 15 is 1st element less than 2nd at same position
cout <<
"The 1st mismatch element of 1st container : "
;
cout << *mispair.first << endl;
cout <<
"The 1st mismatch element of 2nd container : "
;
cout << *mispair.second << endl;
// using mismatch() to search for 1st mismatch
mispair = mismatch(v3.begin(), v3.end(), v4.begin(), compare);
// printing the mismatch pair
// no mismatch
// all elements in 1st container are greater than 2nd
// points to position after last 0 and corresponding 24
cout <<
"The returned value from 1st container is : "
;
cout << *mispair.first << endl;
cout <<
"The returned value from 2nd container is : "
;
cout << *mispair.second << endl;
}
Producción:
The 1st mismatch element of 1st container : 15 The 1st mismatch element of 2nd container : 25 The returned value from 1st container is : 0 The returned value from 2nd container is : 24
Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA