2011-01-31 17 views
37

Cosa si intende per questa istruzione C++?vector <int> :: size_type in C++

vector<int>::size_type x; 

E, qual è l'utilizzo dell'operatore ambito :: qui? In altre parole, come leggiamo questa affermazione in inglese?

Ad esempio, per X::x(){...}, diciamo che x() è un member function di class X.

risposta

52

size_type è un tipo (statico) membro del tipo vector<int>. Di solito, è un typedef per std::size_t, che di solito è uno typedef per unsigned int o unsigned long long.

+7

Quali sono le eccezioni a questo "di solito"? Io, quando è insolito? – ibrahim5253

+1

"Solitamente" significa che lo standard non lo specifica, ma è quello che le implementazioni popolari hanno scelto di fare. In realtà, conosco un'eccezione. Linux glibc usa 'unsigned long' per' size_t' sulla piattaforma x86_64. – proski

3

vettore è un modello

così il tipo vector templato con int ha un elemento typedef chiamato size_type. x è definito come una variabile di quel tipo.

18

Lo leggerò come "dichiarare x come variabile di un tipo adatto a contenere la dimensione di un vettore". Il vettore definisce il proprio tipo per la sua lunghezza, ed è sempre più pulito da usare se possibile, piuttosto che "indovinando" e usando int, unsigned int, long, unsigned long o size_t ecc. Come altrimenti dovresti fare.

+1

E 'necessario includere questa parte 'vector '? Come possiamo definire 'x' come' size_type' che il vettore definisce per se stesso? Grazie – Simplicity

+3

@ user588855: Sì, è necessario utilizzare il nome completo. È possibile che il vettore sia un modello specializzato, il cui size_type è diverso da ad es. vector :: size_type. – unwind

+1

Nel caso di 'vector :: size_type', la dimensione non sarebbe un' int'? quando dici che "size_type" potrebbe essere diverso in questo caso, cosa intendi con questo? Grazie – Simplicity

Problemi correlati