std::equal
De cppreference.com
<tbody>
</tbody>
| 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.
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. 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:
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 igualesOriginal:
true if the elements in the two ranges are equalThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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.
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.
You can help to correct and verify the translation. Click here for instructions.
Complejidad
A lo sumo
last1 - first1 aplicaciones del predicadoOriginal:
At most
last1 - first1 applications of the predicateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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.
You can help to correct and verify the translation. Click here for instructions.
Ejecuta este código
#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
