std::unique_copy
![]() |
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 <algorithm>
|
||
template< class InputIt, class OutputIt > ForwardIt unique_copy( InputIt first, InputIt last, |
(1) | |
template< class InputIt, class OutputIt, class BinaryPredicate > ForwardIt unique_copy( InputIt first, InputIt last, |
(2) | |
[first, last)
rango, a otro principio rango en d_first
de tal manera que no hay elementos iguales consecutivos. Sólo el primer elemento de cada grupo de elementos iguales se copia. La primera versión utiliza operator==
para comparar los elementos, la segunda versión utiliza el predicado binario dado p
.[first, last)
, to another range beginning at d_first
in such a way that there are no consecutive equal elements. Only the first element of each group of equal elements is copied. The first version uses operator==
to compare the elements, the second version uses the given binary predicate p
.You can help to correct and verify the translation. Click here for instructions.
Contenido |
[editar] Parámetros
first, last | - | el intervalo de elementos de proceso
Original: the range of elements to process The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
d_first | - | el comienzo del rango de destino
Original: the beginning of the destination range 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) |
Requisitos de tipo | ||
-InputIt debe reunir los requerimientos de InputIterator .
| ||
-OutputIt debe reunir los requerimientos de OutputIterator .
| ||
-The type of dereferenced InputIt must meet the requirements of CopyAssignable .
| ||
-The type of dereferenced InputIt must meet the requirements of CopyConstructible . if neither InputIt nor OutputIt satisfies ForwardIterator
|
[editar] Valor de retorno
You can help to correct and verify the translation. Click here for instructions.
[editar] Posible implementación
Primera versión |
---|
template<class ForwardIt, class OutputIt> ForwardIt unique_copy(ForwardIt first, ForwardIt last, OutputIt d_first) { if (first == last) return d_first; *d_first = *first; while (++first != last) { if (!(*d_first == *first)) { *(++d_first) = *first; } } return ++d_first; } |
Segunda versión |
template<class ForwardIt, class OutputIt, class BinaryPredicate> ForwardIt unique_copy(ForwardIt first, ForwardIt last, OutputIt d_first, BinaryPredicate p) { if (first == last) return d_first; *d_first = *first; while (++first != last) { if (!p(*result, *first)) { *(++d_first) = *first; } } return ++d_first; } |
[editar] Ejemplo
You can help to correct and verify the translation. Click here for instructions.
#include <string> #include <iostream> #include <algorithm> #include <iterator> int main() { std::string s1 = "The string with many spaces!"; std::cout << "before: " << s1 << '\n'; std::string s2; std::unique_copy(s1.begin(), s1.end(), std::back_inserter(s2), [](char c1, char c2){ return c1 == ' ' && c2 == ' '; }); std::cout << "after: " << s2 << '\n'; }
Salida:
before: The string with many spaces! after: The string with many spaces!
[editar] Complejidad
first
y last
first
and last
You can help to correct and verify the translation. Click here for instructions.
[editar] Ver también
Encuentra dos elementos contiguos idénticos (o que satisfagan un predicado dado). (plantilla de función) | |
Elimina elementos duplicados consecutivos en un rango. (plantilla de función) |