Kiedy zadzwonić std::vector::reserve
gdy identyfikator jest typu std::vector<Foo*>
reserve(...)
nic nie robi:C++: std :: vector :: rezerwa nie zastrzegając przy zawierający wskazówki
std::vector<int*> bar;
bar.reserve(20);
//I expect bar.size to return 20...
std::size_t sz = bar.size();
for(std::size_t i = 0; i < sz; ++i) {
//Do Stuff to all items!
}
Wspomniany for
pętla biegnie dokładnie zero razy i bar. size() zwraca zero. Nie pamiętam, czy jest to również prawdą w przypadku wszystkich innych kontenerów STL, ale jeśli tak, to w tym zachowanie dla std :: vector: DLACZEGO?
Oprócz poniższych rzeczy, myślę, że masz również na myśli użycie 'std :: vector :: size_type' zamiast tylko' std :: size_t'. Nie jestem pewien, czy to ma tak duże znaczenie, ale widziałem to jako coś w rodzaju "najlepszych praktyk" dla STL. Można również utworzyć instancję wektorową z parametrem wielkości. Myślę, że 'std :: vector bar (20);' na przykład powinien przydzielić przestrzeń dla 20 liczb całkowitych dla tej tablicy. –
ely
Pedantyczny kod typu 'for (std :: vector :: size_type i; i
user763305