xieite::find_occur()

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

Finds the Nth occurrence of a subrange or value in a range.


Declarations

#0
template<std::ranges::forward_range Range, xieite::is_fwd_sized_range Subrange, xieite::is_lref_invoc<bool(std::ranges::range_common_reference_t<Range>, std::ranges::range_common_reference_t<Subrange>)> Pred = std::ranges::equal_to>
[[nodiscard]] constexpr std::ranges::subrange<std::ranges::iterator_t<Range>> find_occur(Range& range, std::ranges::range_size_t<Range> n, Subrange&& subrange, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_range<Subrange> && xieite::is_noex_lref_invoc<Pred, bool(std::ranges::range_common_reference_t<Range>, std::ranges::range_common_reference_t<Subrange>)>);

#1
template<std::ranges::forward_range Range, xieite::is_lref_invoc<bool(std::ranges::range_common_reference_t<Range>, std::ranges::range_common_reference_t<Range>)> Pred = std::equal_to<>>
[[nodiscard]] constexpr std::ranges::iterator_t<Range> find_occur(Range& range, std::ranges::range_size_t<Range> n, std::ranges::range_common_reference_t<const Range> value, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_lref_invoc<Pred, bool(std::ranges::range_common_reference_t<Range>, 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(array, 3, 0) - array);
}
Output:
5
[View in Compiler Explorer]