Lessico IT › Programmazione › Ranges in C++

Ranges in C++

Programmazione Svenska → Aggiornato: 2026-10-02

La riforma degli algoritmi standard in C++20: una collezione si passa come un unico oggetto invece che come due iteratori, e le trasformazioni si concatenano con una pipe.

Il vecchio stile imponeva di scrivere std::sort(v.begin(), v.end()) e non offriva alcun aiuto dal compilatore se i due iteratori provenivano da contenitori diversi. Con i ranges diventa std::ranges::sort(v). La novità più importante sono le view: adattatori lazy e non proprietari che si compongono — v | views::filter(even) | views::transform(square) | views::take(5) percorre la collezione una sola volta senza creare vettori intermedi. Il fondamento è la libreria range-v3 di Eric Niebler. Le critiche riguardano i tempi di compilazione, i messaggi d'errore che restano difficili da leggere anche con i concept, e il fatto che C++20 sia uscito senza ranges::to, rendendo inutilmente scomodo riottenere un vero contenitore. È arrivato con C++23.

← Torna al lessico