Quando si utilizzano le funzioni di STL come sort()
o min_element()
devo sempre specificare l'intervallo da iniziano e finiscono in modo esplicito:Perché devo sempre specificare l'intervallo nelle funzioni dell'algoritmo di STL in modo esplicito, anche se voglio lavorare sull'intero contenitore?
void range_example()
{
std::vector<int> list = {7, 3, 9, 1, 5, 2};
auto found_element = std::min_element(list.begin(), list.end());
std::cout << *found_element << std::endl;
}
questo ha un senso se ho intenzione di lavorare solo su parte del mio contenitore, ma più spesso ho bisogno le funzioni per lavorare sull'intero contenitore. C'è un motivo per cui non v'è una funzione di overload che consente per questo:
std::vector<int> list = {7, 3, 9, 1, 5, 2};
auto found_element = std::min_element(list);
Esiste un modo per realizzare una chiamata di funzione per la gamma totale di un contenitore che ho trascurato?
MODIFICA: Sono consapevole che posso incapsulare quello in una funzione da solo, ma poiché questo deve essere fatto per tutte le funzioni, vorrei evitare che se c'è un modo migliore.
Sede [Gamma v3] (https://github.com/ericniebler/range-v3). – ildjarn
È possibile scrivere una funzione per questo. – songyuanyao
Gli intervalli sono ora una bozza [Specifiche tecniche] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4382.pdf) quindi con un po 'di fortuna vedrai il supporto per loro spuntando in compilatori a un certo punto. – user657267