Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

equal

 

Compara dos intervalos elemento a elemento para ver si son iguales o equivalentes según lo especificado por un predicado binario.

Use std::equal al comparar elementos de diferentes tipos de contenedor (por ejemplo, vector y list) o al comparar diferentes tipos de elemento, o cuando sea necesario comparar subintervalos de contenedores. Por otra parte, al comparar elementos de igual tipo en el mismo tipo de contenedor, use el operador no miembro==que se proporcionan para cada contenedor.

Use las sobrecargas de dos intervalos en código C++14 porque las sobrecargas que toman un único iterador para el segundo intervalo no detectan las diferencias si el segundo intervalo es más largo que el primero, lo que provoca un comportamiento indefinido si el segundo intervalo es más corto que el primero.


        template<class InputIterator1, class InputIterator2>
   bool equal(
      InputIterator1 First1,
      InputIterator1 Last1,
      InputIterator2 First2
   );
template<class InputIterator1, class InputIterator2, class BinaryPredicate>
   bool equal(
      InputIterator1 First1,
      InputIterator1 Last1,
      InputIterator2 First2,
      BinaryPredicate Comp
   );

// C++14
template<class InputIterator1, class InputIterator2>
   bool equal(
      InputIterator1 First1, 
      InputIterator1 Last1,
      InputIterator2 First2,
      InputIterator2 Last2
   );

template<class InputIterator1, class InputIterator2, class BinaryPredicate>
   bool equal(
      InputIterator1 First1,
      InputIterator1 Last1,
      InputIterator2 First2,
      InputIterator2 Last2,

      BinaryPredicate Comp
   );

First1

Un iterador de entrada que dirige a la posición del primer elemento en el primer intervalo que se va a probar.

Last1

Un iterador de entrada que dirige a la posición situada una posición después del último elemento en el primer intervalo que se va a probar.

First2

Un iterador de entrada que dirige a la posición del primer elemento en el segundo intervalo que se va a probar.

First2

Un iterador de entrada que dirige a la posición situada una posición después del último elemento en el segundo intervalo que se va a probar.

Comp

Objeto de función de predicado definido por el usuario que define la condición que se debe cumplir si dos elementos se van a tomar como equivalentes. Un predicado binario toma dos argumentos y devuelve true si se cumplen y false si no se cumplen.

true únicamente si los intervalos son idénticos o equivalentes en el predicado binario cuando se compara elemento a elemento; en caso contrario, false.

El intervalo en el que se va a buscar debe ser válido: todos los iteradores deben poder desreferenciarse y se debe poder acceder a la última posición desde la primera con incrementos.

Si los dos intervalos tienen la misma duración, la complejidad temporal del algoritmo es lineal en el número de elementos incluidos en el intervalo. De lo contrario, la función devuelve inmediatamente false.

No es necesario que operator== o el predicado definido por el usuario impongan una relación de equivalencia que sea simétrica, reflexiva y transitiva entre sus operandos.

Ejemplo

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> v1 { 0, 5, 10, 15, 20, 25 };
    vector<int> v2 { 0, 5, 10, 15, 20, 25 };
    vector<int> v3 { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 };

    // Using range-and-a-half equal:
    bool b = equal(v1.begin(), v1.end(), v2.begin());
    cout << "v1 and v2 are equal: "
       << b << endl; // true, as expected

    b = equal(v1.begin(), v1.end(), v3.begin());
    cout << "v1 and v3 are equal: "
       << b << endl; // true, surprisingly

    // Using dual-range equal:
    b = equal(v1.begin(), v1.end(), v3.begin(), v3.end());
    cout << "v1 and v3 are equal with dual-range overload: "
       << b << endl; // false

    return 0;
}


Requisitos

Encabezado: <algorithm>

Espacio de nombres: std

Mostrar: