vectores son pseint leer iguales elementos con comparar comparacion como averiguar arreglos c++ vector set

c++ - pseint - Comprueba si dos vectores son iguales



leer dos vectores y averiguar si son iguales (2)

¿Cómo puedo verificar si los primeros elementos "n" de dos vectores son iguales o no?

Intenté lo siguiente:

#include <iostream> #include <vector> #include <iterator> using namespace std; typedef vector<double> v_t; int main(){ v_t v1,v2; int n = 9; for (int i = 1; i<10; i++){ v1.push_back(i); v2.push_back(i); } v1.push_back(11); v2.push_back(12); if (v1.begin()+n == v2.begin()+n) cout << "success" << endl; else cout << "failure" << endl; }

¿Por qué imprime "falla" y no "éxito"?


El modo más fácil (en cuanto a la menor cantidad de funciones no cotidianas para buscar) de comparar los dos es repetir el ciclo:

bool are_equal = true; for (int i = 0; i < first_how_many; i++) if (v1[i] != v2[i]) { are_equal = false; break; }

Hará casi lo mismo, pero si lo prefiere, puede usar la función std::equal del encabezado <algorithm> : http://www.cplusplus.com/reference/algorithm/equal/


Use la función std::equal del encabezado <algorithm> :

if (std::equal(v1.begin(), v1.begin() + n, v2.begin()) std::cout << "success" << std::endl;

Tenga en cuenta que ambos vectores deben tener al menos n elementos en ellos. Si cualquiera de los dos es demasiado corto, el comportamiento de su programa no estará definido.

Si desea comprobar si el vector completo es igual al otro, simplemente compárelos como si comparase algo más:

if (v1 == v2)

Su código (fallido) fue la comparación de un iterador de un vector con un iterador del otro. Iteradores de vectores iguales no son iguales. Cada iterador está vinculado a la secuencia que está iterando, por lo que un iterador de un vector nunca será igual al iterador de otro.