Domanda cosa si intende per auto in c++?

Davide27

Utente Bronze
4 Marzo 2022
40
19
1
25
Buonasera a tutti. Stavo leggendo un libro di C++ quando a un certo punto in un codice veniva usato "auto". Qualcuno sa spiegarmi a che serve?
Incollo anche il codice per comodità:

C++:
void copy_fct()
{
    int v1[10]={0,1,2,3,4,5,6,7,8,9};
    int v2[10];
    for(auto i=0;i!=10;++i)
        v2[i]=v1[i];
    //...
}

Grazie a tutti!
 
Sì, l'importante è che il tipo di dato si possa ricavare al momento della dichiarazione:
C++:
int a = 4;
auto b = 7; // b è chiaramente un int
auto c; // errore, non stai inizializzando la variabile
L'idea però non è di abusarlo nel modo in cui ho appena fatto, dove il linguaggio sembra perdere di espressività, ma di usarlo dove il tipo di dato è evidente ma non-banale:
C++:
map<string,function<int(void*, float)>> x;
// ...
pair<map<string,function<int(void*, float)>>::iterator,map<string,function<int(void*, float)>>::iterator> pippo = x.equal_range("pippo");
auto pluto = x.equal_range("pluto");
Le variabili pippo e pluto hanno lo stesso tipo, che è qualsiasi cosa sia quello che restituisce x.equal_range().

Oltretutto, è consistente con l'uso di di const e delle & e puoi anche usarlo per fare tuple unpacking:
C++:
map<string, int> mapping = {{"pippo", 1}, {"pluto", 100}, {"paperino", 23}};
for (const auto &[k,v] : mapping) cout << k << " => " << v << "\n";