21 UniPred if_pred, BinPred adj_pred ) {
22 FwdIt i = std::find_if( first, last, if_pred );
24 if ( i != last ) i = std::find_if( ++i, last, if_pred );
27 if ( adj_pred( ( *j ), ( *i ) ) )
return std::make_pair( j, i );
29 while ( !( if_pred( *i ) ) && ( i != last ) ) ++i;
31 return std::make_pair( last, last );
36 UniPred if_pred, BinPred adj_pred,
44 std::vector<FwdIt> itvec;
45 std::pair<FwdIt, FwdIt> adjpr1 =
adjacent_find_if( first, last, if_pred, adj_pred );
46 if ( adjpr1.second == last )
return itvec;
48 itvec.push_back( adjpr1.first );
49 itvec.push_back( adjpr1.second );
50 std::pair<FwdIt, FwdIt> adjpr2;
52 while ( ( itvec.size() < N ) && ( adjpr1.second != last ) )
55 if ( adjpr2.second == last )
return std::vector<FwdIt>();
56 if ( adj_pred( ( *adjpr1.second ), ( *adjpr2.second ) ) ) itvec.push_back( adjpr2.second );
60 itvec.push_back( adjpr2.first );
61 itvec.push_back( adjpr2.second );
63 adjpr1.second = adjpr2.second;