Ho appena iniziato a imparare i vettori e poco confuso su size()
e capacity()
So poco di entrambi. Ma perché in questo programma entrambi sono diversi? anche array(10)
sta facendo spazio per 10 elementi e inizializzare con 0.Perché Vector's size() e capacity() è diverso dopo push_back()
Prima di aggiungere array.push_back(5)
Quindi array.size();
è 10 che è ok.
Quindi il array.capacity();
è 10 che va bene.
Dopo aver aggiunto array.push_back(5)
Così array.size();
è 11 che è ok (already 10 time 0 is added and then push_back add one more element 5)
.
Quindi array.capacity();
è 15 Perché? (is it reserving 5 blocks for one int?)
.
#include <iostream>
#include <vector>
int main(){
std::vector<int> array(10); // make room for 10 elements and initialize with 0
array.reserve(10); // make room for 10 elements
array.push_back(5);
std::cout << array.size() << std::endl;
std::cout << array.capacity() << std::endl;
return 0;
}
Solo una nota, non si dovrebbe usare 'array' come nome di variabile; specialmente quando il tipo non è un array. Mi rendo conto che questo è solo un codice di esempio, ma probabilmente è solo una buona idea. :) – erip
Non usare 'std :: endl' a meno che non sia necessario il materiale aggiuntivo che fa. ''\ n'' inizia una nuova riga. –
@PeteBecker true, ma in questo caso, dove l'output è diagnostico, tendiamo a volere il 'flush' implicito che' endl' ha, altrimenti i messaggi non appariranno necessariamente fino a tardi e/o nell'ordine sbagliato. (almeno questa è stata la mia esperienza) –