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