std::adjacent_find
Актуально для C++23.
#include <algorithm>
Актуально на 2024-02-21.
Define overload #1
template<class ForwardIterator> constexpr inline ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last);
Ищет в диапазоне [first, last] последовательность из одинаковых элементов.
Вернёт итератор на первый элемент, или last, если таких последовательностей нет.
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class ForwardIterator> ForwardIterator adjacent_find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last);
Example, possible implementation
Define overload #3
template<class ForwardIterator, class BinaryPredicate> constexpr inline ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last, BinaryPredicate binary_pred)
Ищет в диапазоне [first, last] последовательность из одинаковых элементов.
Для сравнения элементов применяется предикат pred.
Вернёт итератор на первый элемент, или last, если таких последовательностей нет.
Example, possible implementation
Define overload #4
template<class ExecutionPolicy, class ForwardIterator, class BinaryPredicate>
ForwardIterator
adjacent_find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last,
BinaryPredicate pred);
Example, possible implementation
Examples
Example 1:
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
std::string str{"gcc_v_5"};
auto find_it = std::adjacent_find(std::begin(str), std::end(str));
if (find_it != std::end(str))
{
std::cout << std::string_view(find_it, std::end(str)) << std::endl;
}
else
{
std::cout << "No matches." << std::endl;
}
return 0;
}
cc_v_5
Example 2:
#include <iostream>
#include <algorithm>
#include <string>
int main()
{
std::string str{"gcc_v_5"};
const auto pred = [](auto ch1, auto ch2) {
return ch1 == ch2;
};
auto find_it = std::adjacent_find(std::begin(str), std::end(str), pred);
if (find_it != std::end(str))
{
std::cout << std::string_view(find_it, std::end(str)) << std::endl;
}
else
{
std::cout << "No matches." << std::endl;
}
return 0;
}
cc_v_5
Changelog
See also
TODO
This page was last modified on 2024-02-21