PDA

Visualizza la versione completa : [C++] Inizializzazione lista al momento della dichiarazione


gatsu85
24-05-2011, 10:16
Buongiorno ragazzi,
avrei un dubbio riguardante l'inizializzazione di una lista di stringhe standard al momento della dichiarazione.
Questo perché non voglio che vi siano nel codice variabili dichiarate ma non inizializzate. Ora in un programmino in cui avevo una lista non inizializzata al momento della dichiarazione ho fatto così:

std::list<std::string> lista(0); //prima era semplicemente std::list<std::string> lista;

Facendo questa piccola modifica funzona ancora tutto.
Sapete dirmi come viene inizializzata la lista quando uso il costruttore con (0)?


Grazie in anticipo

shodan
24-05-2011, 13:33
Precauzione inutile. La std::list si inizializza da sola a 0 elementi quando la dichiari.

gatsu85
24-05-2011, 13:41
Ok, questo lo sapevo anche io, la mia domanda era un tantino diversa: io non voglio sapere se è utile o inutile voglio solo sapere se il comportamento è lo stesso. Perché ho un tool di rilevamento della qualità del codice che se non esplicito le dichiarazioni me lo segnala. Quindi ripeto la domanda se dichiaro la lista come nel post precedente cosa succede? è comunque una lista inizializzata con zero elementi (stringhe) ??

Grazie

shodan
24-05-2011, 13:52
Premesso che l'unico tool valido è quello posto tra un orecchio e l'altro: si. Quando dichiari un container STL di tipo: std::list, std::vector, std::deque, std::map etc, il costruttore di default crea l'oggetto con 0 elementi contenuti. Se specifichi la dimensione, crea tanti oggetti quanti la dimensione stessa e li inizializza col loro costruttore di default.
In ogni caso non hai niente di non inizializzato.

Al momento l'unica eccezione che conosco è std::array (nuovo standard) che va inizializzato esattamente come un normale array C (di cui è l'equivalente C++)

Per quanto riguarda la tua domanda iniziale, basta leggere la documentazione:
http://www.cplusplus.com/reference/stl/list/list/
per vedere come si comportano i costruttori di una std::list

Loading