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
C++26
TODOC++23
TODOC++20
TODOC++17
TODOC++14
TODOC++11
TODOSee also
TODO
This page was last modified on 2024-02-21