Sto solo imparando C++ e sto usando C++ accelerato.Perché ha utilizzato "typedef vector <double> :: size_type" invece di utilizzare "int"
In un esempio di vettore, lo scrittore ha utilizzato il seguente codice;
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size;
So typedef vector<double>::size_type vec_sz;
è così che lui non ha bisogno di scrivere il prossimo comando come vector<double>::size_type size = homework.size;
, ma la mia domanda è: perché non ha solo dichiarare size
come un intero, invece?
int size = homework.size;
È perché stiamo utilizzando un vettore?
In tal caso, ciò significa che i valori restituiti dagli iteratori vettoriali non possono essere memorizzati in variabili regolari?
Ecco una domanda per voi: qual è il tipo dietro 'vector :: size_type'? –
La risposta breve è che lo scrittore poteva e probabilmente avrebbe dovuto usare 'size_t', ma che * non * è lo stesso di' int' (è * di solito * uguale a 'unsigned int' o' unsigned long'; la sua mancanza di uniformità è molto importante e la differenza di dimensioni può anche dipendere da ciò che si sta facendo). La lunga risposta è troppo lunga anche per la casella di risposta effettiva; un libro _good_ C++ spiegherà in effetti quale è l'accordo con 'int' vs' size_t' vs 'container :: size_type' ma suona come il tuo no. –
zwol
Il punto è che non sappiamo esattamente quale tipo sia dietro 'std :: vector :: size_type', ma qualunque sia il tipo, vogliamo un modo breve per dichiararlo. È improbabile che sia un 'int' btw. Sappiamo che è un tipo che può contenere numeri abbastanza grandi per indirizzare il numero massimo di elementi in un * vettore *. –
Galik