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
#0Looks for non-overlapping subranges.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 >)>);
#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
Output:int main () {int array [] = {0 ,0 ,2 ,1 ,0 ,0 ,0 ,4 ,0 };xieite ::dump (xieite ::find_most_consec (array ,0 )); }
[View in Compiler Explorer][0, 0, 0]