std::equal - cppreference.com
De cppreference.com
|
|
Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate. La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
| Definido en el archivo de encabezado |
||
|
|
(1) | |
|
|
(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.
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. |
| 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. |
| 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:
Mientras que la signatura no necesita tener |
| Requisitos de tipo | ||
-InputIt1, InputIt2 debe reunir los requerimientos de InputIterator.
| ||
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.
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.
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.
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; } |
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