std::forward_list<T,Allocator>::unique

Removes all consecutive duplicate elements from the container. Only the first element in each group of equal elements is left. Invalidates only the iterators and references to the removed elements.

# Declarations

void unique();

(since C++11) (until C++20)

size_type unique();

(since C++20)

template< class BinaryPredicate >
void unique( BinaryPredicate p );

(since C++11) (until C++20)

template< class BinaryPredicate >
size_type unique( BinaryPredicate p );

(since C++20)

# Parameters

# Return value

(none)

# Notes

Feature-test macro Value Std Feature __cpp_lib_list_remove_return_type 201806L (C++20) Change the return type

# Example

#include <iostream>
#include <forward_list>
 
std::ostream& operator<< (std::ostream& os, std::forward_list<int> const& container)
{
    for (int val : container)
        os << val << ' ';
    return os << '\n';
}
 
int main()
{
    std::forward_list<int> c{1, 2, 2, 3, 3, 2, 1, 1, 2};
    std::cout << "Before unique(): " << c;
    const auto count1 = c.unique();
    std::cout << "After unique():  " << c
              << count1 << " elements were removed\n";
 
    c = {1, 2, 12, 23, 3, 2, 51, 1, 2, 2};
    std::cout << "\nBefore unique(pred): " << c;
 
    const auto count2 = c.unique([mod = 10](int x, int y)
    {
        return (x % mod) == (y % mod);
    });
 
    std::cout << "After unique(pred):  " << c
              << count2 << " elements were removed\n";
}

# See also