Gli algoritmi STL standalone (come std::count_if
) accettano una coppia di iteratori. In tutti i casi in cui io uso quelli (e in tutti gli esempi che ho visto in linea!), Mi ritrovo a digitareAlgoritmi STL che prendono l'intero contenitore anziché .begin(), end() come arg?
std::count_if(myContainer.begin(),myContainer.end(), /* ... */);
C'è un motivo per cui i modelli stenografici dello stile
std::count_if(myContainer, /* ... */);
non sono fornito, dato che più che non è l'operazione eseguita sull'intero contenitore? L'ho semplicemente trascurato? La risposta è diversa per C++ 11 e C++ 03?
È semplicemente una decisione di progettazione. Molte persone non lo trovano una buona scelta (vedi http://www.slideshare.net/rawwell/iteratorsmustgo). Boost fornisce quegli algoritmi che usano i loro concetti di intervallo. – visitor