Compare los arrays en C++
-
Utilice la instrucción de bucle
for
para comparar arrays en C++ - Usar la función definida por el usuario para comparar arrays en C++
-
Usa el algoritmo
std::equal
para comparar matrices en C++
Este artículo demostrará múltiples métodos de cómo comparar matrices en C++.
Utilice la instrucción de bucle for
para comparar arrays en C++
En estos ejemplos, utilizaremos un contenedor de array variable - std::vector
. Esta clase tiene un operador incorporado ==
que podemos usar para comparar los dos vectores dados. En este caso, no tenemos que preocuparnos por las diferentes longitudes de los vectores, ya que se manejan por el método internamente. El valor de retorno es booleano con true
, lo que implica la igualdad de dos vectores.
Note que evaluamos la expresión con ? :
declaración condicional e imprimimos los mensajes de cadena correspondientes a la consola.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
vector<int> i_vec2 = {12, 32, 43, 53, 23, 25};
vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};
i_vec1 == i_vec2
? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
: cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;
i_vec1 == i_vec3
? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
: cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;
return EXIT_SUCCESS;
}
Producción :
Vectors i_vec1 and i_vec2 are not the same
Vectors i_vec1 and i_vec3 are the same
Usar la función definida por el usuario para comparar arrays en C++
El método anterior puede generalizarse en la función de plantilla del usuario y, si es necesario, pueden añadirse códigos de retorno personalizados y manejo de excepciones. En este ejemplo, hemos implementado la función compareVectorContents
que toma dos referencias vector
y evalúa la condición de igualdad usando la estructura if
.
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
template <typename T>
bool compareVectorContents(vector<T> &vec1, vector<T> &vec2) {
if (vec1 == vec2) {
return true;
} else {
return false;
}
}
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
vector<int> i_vec3 = {12, 32, 43, 53, 23, 65};
vector<int> i_vec4 = {12, 32, 43};
compareVectorContents(i_vec1, i_vec3)
? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
: cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;
compareVectorContents(i_vec1, i_vec4)
? cout << "Vectors i_vec1 and i_vec4 are the same" << endl
: cout << "Vectors i_vec1 and i_vec4 are not the same" << endl;
return EXIT_SUCCESS;
}
Vectors i_vec1 and i_vec3 are the same
Vectors i_vec1 and i_vec4 are not the same
Usa el algoritmo std::equal
para comparar matrices en C++
Otro método para comparar el contenido de dos vectores es el algoritmo std::equal
de la biblioteca estándar de C++, definido en el archivo de cabecera <algorithm>
. El método equal
toma 4 parámetros que representan 2 rangos separados que deben ser comparados, proporcionando así una interfaz más genérica para tratar las comparaciones. Este método puede ser empleado en rangos formados con iteradores de contenedores no ordenados, a saber - std::unordered_set
, std::unordered_map
etc. El valor de retorno equal
es booleano y devuelve true
si los elementos son iguales en dos rangos. Además, la función devolverá false
si los rangos pasados difieren en longitudes.
#include <algorithm>
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::equal;
using std::string;
using std::vector;
int main() {
vector<int> i_vec1 = {12, 32, 43, 53, 23, 65};
vector<int> i_vec2 = {12, 32, 43, 53, 23, 65};
vector<int> i_vec3 = {12, 32, 43};
equal(i_vec1.begin(), i_vec1.end(), i_vec2.begin(), i_vec2.end())
? cout << "Vectors i_vec1 and i_vec2 are the same" << endl
: cout << "Vectors i_vec1 and i_vec2 are not the same" << endl;
equal(i_vec1.begin(), i_vec1.end(), i_vec3.begin(), i_vec3.end())
? cout << "Vectors i_vec1 and i_vec3 are the same" << endl
: cout << "Vectors i_vec1 and i_vec3 are not the same" << endl;
return EXIT_SUCCESS;
}
Producción :
Vectors i_vec1 and i_vec2 are the same
Vectors i_vec1 and i_vec3 are not the same
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook