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, OutputIt d_first ); |
(1) | |
template< class InputIt, class OutputIt, class BinaryPredicate > ForwardIt unique_copy( InputIt first, InputIt last, OutputIt d_first, BinaryPredicate p ); |
(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.
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:
Mientras que la signatura no necesita tener |
| 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
| ||
Valor de retorno
You can help to correct and verify the translation. Click here for instructions.
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;
}
|
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!
Complejidad
first y lastfirst and lastYou can help to correct and verify the translation. Click here for instructions.
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) |