Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75

    [C++] Inizializzazione lista al momento della dichiarazione

    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

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Precauzione inutile. La std::list si inizializza da sola a 0 elementi quando la dichiari.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    75
    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

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.