std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);
Come vengono inizializzati gli elementi di questi 3 vettori?std :: elementi vettoriali di inizializzazione
Informazioni su int, lo test e ho visto che tutti gli elementi diventano 0. È questo standard? Credevo che i primitivi restassero indefiniti. Creo un vettore con 300000000 elementi, fornisco valori diversi da zero, lo elimino e lo ricrei, per evitare la memoria del sistema operativo in modo chiaro per la sicurezza dei dati. Anche gli elementi del vettore ricreato erano 0.
E l'iteratore? Esiste un valore iniziale (0) per il costruttore predefinito o il valore iniziale rimane indefinito? Quando lo controllo, gli iteratori puntano a 0, ma può essere OS
Quando creo un oggetto speciale per tracciare i costruttori, ho visto che per il primo oggetto, il vettore esegue il costruttore predefinito e per tutti gli altri esegue il costruttore di copie . È questo standard?
C'è un modo per evitare completamente l'inizializzazione degli elementi? O devo creare il mio vettore? (Oh mio Dio, dico sempre NON UN'ALTRA IMPLEMENTAZIONE VETTORIALE) Chiedo perché uso matrici sparse ultra enormi con elaborazione parallela, quindi non posso usare push_back() e ovviamente non voglio un'inizializzazione inutile, quando più tardi cambierò il valore.
Credo che _C++ 11_ cambi questo a 'n valori inizializzati di default 'invece di un'inizializzazione predefinita seguita da un numero di copie. –
@Attila Vedi la mia risposta per le citazioni da C++ 11. – pmr
Sì C++ 11 lo cambia in n costruttori predefiniti. Confermato. – Chameleon