std::unique
                Актуально для C++23.
                #include <algorithm>
                Актуально на 2024-02-29.
                Define overload #1
template<class ForwardIterator> constexpr inline ForwardIterator unique(ForwardIterator first, ForwardIterator last);
Переместит дублирующие элементы, которые расположены друг за другом, из диапазона [first, last], в его конец.
Элементы сравниваются с помощью оператора сравнения "==".
Вернёт итератор указывающий на конец нового диапазона.
Example, possible implementation
Define overload #2
template <class ExecutionPolicy, class ForwardIterator, class BinaryPredicate>
ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first,
                       ForwardIterator last, BinaryPredicate pred);
Example, possible implementation
Define overload #3
template<class ForwardIterator, class BinaryPredicate> constexpr inline ForwardIterator unique(ForwardIterator first, ForwardIterator last, BinaryPredicate pred)
Переместит дублирующие элементы, которые расположены друг за другом, из диапазона [first, last], в его конец.
Для сравнения элементов применяется бинарный предикат pred.
Вернёт итератор указывающий на конец нового диапазона.
Example, possible implementation
Define overload #4
template <class ExecutionPolicy, class ForwardIterator> ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last);
Example, possible implementation
Examples
Example 1:
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
    std::string str{"aabccdedfff"};
    auto end = std::unique(std::begin(str), std::end(str));
    for (auto start = std::begin(str); start != end; ++start)
    {
        std::cout << *start;
    }
    return 0;
}
abcdedf
Example 2:
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
    auto pred = [](auto a1, auto a2) {
        return a1 == a2;
    };
    std::string str{"aabccdedfff"};
    auto end = std::unique(std::begin(str), std::end(str), pred);
    for (auto start = std::begin(str); start != end; ++start)
    {
        std::cout << *start;
    }
    return 0;
}
abcdedf
Changelog
See also
TODO
 This page was last modified on 2024-02-29