std::unique
De cppreference.com
Definido en el archivo de encabezado <algorithm>
|
||
template< class ForwardIt > ForwardIt unique( ForwardIt first, ForwardIt last ); |
(1) | (constexpr desde C++20) |
template< class ExecutionPolicy, class ForwardIt > ForwardIt unique( ExecutionPolicy&& policy, |
(2) | (desde C++17) |
template< class ForwardIt, class BinaryPred > ForwardIt unique( ForwardIt first, ForwardIt last, BinaryPred p ); |
(3) | (constexpr desde C++20) |
template< class ExecutionPolicy, class ForwardIt, class BinaryPred > |
(4) | (desde C++17) |
Elimina todos los elementos excepto el primero de cada grupo consecutivo de elementos equivalentes del rango [
first,
last)
y devuelve un iterador posterior al final para el nuevo final del rango.
1) Los elementos se comparan utilizando operator==.
Si operator== no establece una relación de equivalencia, el comportamiento no está definido.
3) Los elementos se comparan utilizando el predicado binario dado p.
Si p no establece una relación de equivalencia, el comportamiento no está definido.
2,4) Igual que (1,3), pero ejecutado de acuerdo con policy.
Estas sobrecargas no participan en la resolución de sobrecarga a menos que std::is_execution_policy_v<std::decay_t<ExecutionPolicy>> (hasta C++20) std::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>> (desde C++20) sea verdadera.
Contenido |
[editar] Explicación
La eliminación se realiza desplazando los elementos en el rango de tal manera que los elementos que no se deben eliminar aparezcan al principio del rango.
- El desplazamiento se realiza mediante la asignación de copia (hasta C++11)asignación de movimiento (desde C++11).
- La operación de eliminación es estable: el orden relativo de los elementos que no se deben eliminar permanece igual.
- La secuencia subyacente de
[
first,
last)
no se acorta con la operación de eliminación. Dado result como el iterador devuelto:
- Todos los iteradores en
[
result,
last)
siguen siendo desreferenciables.
- Todos los iteradores en
|
(desde C++11) |