Espacios de nombres
Variantes
Acciones

std::equal

De cppreference.com
< cpp‎ | algorithm
 
 
Biblioteca de algoritmos
Políticas de ejecución (C++17)
Operaciones de secuencia no modificantes
(C++11)(C++11)(C++11)
(C++17)
Operaciones de secuencia modificantes
Operaciones en almacenamiento no inicializado
Operaciones de partición
Operaciones de ordenación
(C++11)
Operaciones de búsqueda binaria
Operaciones de conjuntos (en rangos ordenados)
Operaciones de pila
(C++11)
Operaciones mínimo/máximo
(C++11)
(C++17)
Permutaciones
Operaciones numéricas
Bibliotecas C
 
Definido en el archivo de encabezado <algorithm>
template< class InputIt1, class InputIt2 >

bool equal( InputIt1 first1, InputIt1 last1,

            InputIt2 first2 );
(1)
template< class InputIt1, class InputIt2, class BinaryPredicate >

bool equal( InputIt1 first1, InputIt1 last1,

            InputIt2 first2, BinaryPredicate p );
(2)
Regreso true si los elementos son los mismos en dos gamas: una de ellas definida por [first1, last1) y otro a partir de first2. La primera versión de la función utiliza operator== para comparar los elementos, el segundo utiliza el predicado binario dado p .
Original:
Returns true if the elements are the same in two ranges: one defined by [first1, last1) and another starting at first2. The first version of the function uses operator== to compare the elements, the second uses the given binary predicate p.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Contenido

[editar] Parámetros

first1, last1 -
el primer rango de los elementos para comparar
Original:
the first range of the elements to compare
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
first2 -
a partir de la segunda gama de los elementos para comparar
Original:
beginning of the second range of the elements to compare
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
p - Predicado binario que devuelve ​true si los elementos deben tratarse como iguales.

La signatura de la función predicado deberá ser equivalente a la siguiente:

 bool pred(const Tipo1 &a, const Tipo2 &b);

Mientras que la signatura no necesita tener const &, la función no debe modificar los objetos que se le han pasado y debe ser capaz de aceptar todos los valores de tipo (posiblemente const) Tipo1 y Tipo2 independientemente de la categoría de valor (por lo tanto, no se permite Tipo1 &, ni Tipo1 a menos que para Tipo1 un movimiento sea equivalente a una copia (desde C++11)).
Los tipos Tipo1 y Tipo2 deben ser tales que objetos de tipo InputIt1 y InputIt2 pueden ser desreferenciados y luego convertidos implícitamente a Tipo1 and Tipo2 respectively. ​

Requisitos de tipo
-
InputIt1, InputIt2 debe reunir los requerimientos de InputIterator.

[editar] Valor de retorno

true si los elementos en los dos intervalos son iguales
Original:
true if the elements in the two ranges are equal
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Notas

std::equal no puede ser utilizado para comparar los intervalos formados por los iteradores de std::unordered_set, std::unordered_multiset, std::unordered_map, o std::unordered_multimap porque el orden en el que los elementos se almacenan en los contenedores puede ser diferente incluso si los dos recipientes almacenar los mismos elementos .
Original:
std::equal may not be used to compare the ranges formed by the iterators from std::unordered_set, std::unordered_multiset, std::unordered_map, or std::unordered_multimap because the order in which the elements are stored in those containers may be different even if the two containers store the same elements.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
{{{1}}}
Original:
{{{2}}}
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Complejidad

A lo sumo last1 - first1 aplicaciones del predicado
Original:
At most last1 - first1 applications of the predicate
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Posible implementación

Primera versión
template<class InputIt1, class InputIt2>
bool equal(InputIt1 first1, InputIt1 last1, 
           InputIt2 first2)
{
    for (; first1 != last1; ++first1, ++first2) {
        if (!(*first1 == *first2)) {
            return false;
        }
    }
    return true;
}
Segunda versión
template<class InputIt1, class InputIt2, class BinaryPredicate>
bool equal(InputIt1 first1, InputIt1 last1, 
           InputIt2 first2, BinaryPredicate p)
{
    for (; first1 != last1; ++first1, ++first2) {
        if (!p(*first1, *first2)) {
            return false;
        }
    }
    return true;
}

[editar] Ejemplo

El código siguiente utiliza equal() para probar si una cadena es un palíndromo
Original:
The following code uses equal() to test if a string is a palindrome
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <iostream>
#include <algorithm>
#include <string>
 
void test(const std::string& s)
{
    if(std::equal(s.begin(), s.begin() + s.size()/2, s.rbegin())) {
        std::cout << "\"" << s << "\" is a palindrome\n";
    } else {
        std::cout << "\"" << s << "\" is not palindrome\n";
    }
}
int main()
{
    test("radar");
    test("hello");
}

Salida:

"radar" is a palindrome
"hello" is not palindrome
Encuentra el primer elemento que satisfaga un criterio específico.
(plantilla de función) [editar]
Devuelve true si un rango es lexicográficamente menor que otro.
(plantilla de función) [editar]
Encuentra la primera posición donde dos rangos difieren.
(plantilla de función) [editar]
Busca una subsecuencia de elementos.
(plantilla de función) [editar]