xieite::find_occur_if()

Defined in header <xieite/data/find_occur_if.hpp>

Returns a view to the Nth occurrence of a subrange or value in a range for which a predicate functor returns true.


Declarations

#0
template<std::ranges::forward_range Range, xieite::is_lref_invoc<bool(std::ranges::subrange<std::ranges::iterator_t<Range>>)> Pred = std::identity>
[[nodiscard]] constexpr std::ranges::subrange<std::ranges::iterator_t<Range>> find_occur_if(Range& range, std::ranges::range_size_t<Range> n, std::ranges::range_size_t<Range> subrange_size, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_invoc<Pred, bool(std::ranges::subrange<std::ranges::iterator_t<Range>>)>);

#1
template<std::ranges::forward_range Range, xieite::is_lref_invoc<bool(std::ranges::range_common_reference_t<Range>)> Pred = std::identity>
[[nodiscard]] constexpr std::ranges::iterator_t<Range> find_occur_if(Range& range, std::ranges::range_size_t<Range> n, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_invoc<Pred, bool(std::ranges::range_common_reference_t<Range>)>);


Example

int main() {
	int array[] = { 0, 0, 2, 1, 0, 0, 0, 4, 0 };

	xieite::dump(xieite::find_occur_if(array, 2) - array);
}
Output:
7
[View in Compiler Explorer]