fork download
  1. // vector::reserve
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. int main ()
  6. {
  7. std::vector<int>::size_type sz;
  8.  
  9. std::vector<int> foo;
  10. sz = foo.capacity();
  11. std::cout << "making foo grow:\n";
  12. for (int i=0; i<100; ++i) {
  13. foo.push_back(i);
  14. if (sz!=foo.capacity()) {
  15. sz = foo.capacity();
  16. std::cout << "capacity changed: " << sz << ", " << i << "\n";
  17. }
  18. }
  19.  
  20. std::vector<int> bar;
  21. sz = bar.capacity();
  22. bar.reserve(100); // this is the only difference with foo above
  23. std::cout << "making bar grow:\n";
  24. for (int i=0; i<100; ++i) {
  25. bar.push_back(i);
  26. if (sz!=bar.capacity()) {
  27. sz = bar.capacity();
  28. std::cout << "capacity changed: " << sz << '\n';
  29. }
  30. }
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0.01s 2812KB
stdin
Standard input is empty
stdout
making foo grow:
capacity changed: 1, 0
capacity changed: 2, 1
capacity changed: 4, 2
capacity changed: 8, 4
capacity changed: 16, 8
capacity changed: 32, 16
capacity changed: 64, 32
capacity changed: 128, 64
making bar grow:
capacity changed: 100