std::list::unique
From cppreference.com
(1) | ||
void unique(); |
(until C++20) | |
size_type unique(); |
(since C++20) | |
(2) | ||
template< class BinaryPredicate > void unique( BinaryPredicate p ); |
(until C++20) | |
template< class BinaryPredicate > size_type unique( BinaryPredicate p ); |
(since C++20) | |
Removes all consecutive duplicate elements from the container. Only the first element in each group of equal elements is left. The first version uses operator==
to compare the elements, the second version uses the given binary predicate p
.
Parameters
p | - | binary predicate which returns true if the elements should be treated as equal. The signature of the predicate function should be equivalent to the following: bool pred(const Type1 &a, const Type2 &b); The signature does not need to have const &, but the function must not modify the objects passed to it. |
Return value
(none) |
(until C++20) |
The number of elements removed. |
(since C++20) |
Complexity
Linear in the size of the container
Example
Run this code
#include <iostream> #include <list> int main() { std::list<int> x = {1, 2, 2, 3, 3, 2, 1, 1, 2}; std::cout << "contents before:"; for (auto val : x) std::cout << ' ' << val; std::cout << '\n'; x.unique(); std::cout << "contents after unique():"; for (auto val : x) std::cout << ' ' << val; std::cout << '\n'; return 0; }
Output:
contents before: 1 2 2 3 3 2 1 1 2 contents after unique(): 1 2 3 2 1 2
See also
removes consecutive duplicate elements in a range (function template) |