Che io sappia il "range" dovrebbe essere previsto dal prossimo standard, ma può essere che qualche compilatore lo implementi a livello tr1 (se non è in std è in std::tr1 insomma).
Visual C++ 2010 implementa già alcune cose, oppure si vedere se c'è qualcosa in boost.

Comunque sia, le funzioni che hai citato non sanno il "from - to" di iteratori che gli passi. Puoi benissimo passare due iteratori appartenenti a un intervallo mediano di un container. L'unico vincolo è che l'interatore From sia più basso dell'iteratore To.

Tradotto in codice:
codice:
list<TipoX> MyList.
list.push_back(...);
// per 32 volte.

list<TipoX>::iterator From = std::advance(MyList.begin() 10);
list<TipoX>::iterator To = std::advance(MyList.begin() 20);

find_if(From,to, <condizione>);

From = std::advance(MyList.begin() 25);
To= std::advance(MyList.begin() 30);

find_if(From,to, <condizione>);