xieite::find_most_consec()

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

Returns a view to the longest consecutive subrange consisting of a particular value.


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_most_consec(Range& range, Subrange&& subrange, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_range<Subrange> && xieite::is_noex_invoc<Pred, bool(std::ranges::range_common_reference_t<Range>, std::ranges::range_common_reference_t<Subrange>)>);
Looks for non-overlapping subranges.

#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::subrange<std::ranges::iterator_t<Range>> find_most_consec(Range& range, std::ranges::range_common_reference_t<Range> value, Pred&& pred = {})
noexcept(xieite::is_noex_range<Range> && xieite::is_noex_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_most_consec(array, 0));
}
Output:
[0, 0, 0]
[View in Compiler Explorer]