// vector::reserve
#include <iostream>
#include <vector>
int main ()
{
std::vector<int>::size_type sz;
std::vector<int> foo;
sz = foo.capacity();
std::cout << "making foo grow:\n";
for (int i=0; i<100; ++i) {
foo.push_back(i);
if (sz!=foo.capacity()) {
sz = foo.capacity();
std::cout << "capacity changed: " << sz << ", " << i << "\n";
}
}
std::vector<int> bar;
sz = bar.capacity();
bar.reserve(100); // this is the only difference with foo above
std::cout << "making bar grow:\n";
for (int i=0; i<100; ++i) {
bar.push_back(i);
if (sz!=bar.capacity()) {
sz = bar.capacity();
std::cout << "capacity changed: " << sz << '\n';
}
}
return 0;
}
Ly8gdmVjdG9yOjpyZXNlcnZlCiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICAjaW5jbHVkZSA8dmVjdG9yPgoKICAgIGludCBtYWluICgpCiAgICB7CiAgICAgICAgc3RkOjp2ZWN0b3I8aW50Pjo6c2l6ZV90eXBlIHN6OwoKICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsKICAgICAgICBzeiA9IGZvby5jYXBhY2l0eSgpOwogICAgICAgIHN0ZDo6Y291dCA8PCAibWFraW5nIGZvbyBncm93OlxuIjsKICAgICAgICBmb3IgKGludCBpPTA7IGk8MTAwOyArK2kpIHsKICAgICAgICAgICAgZm9vLnB1c2hfYmFjayhpKTsKICAgICAgICAgICAgaWYgKHN6IT1mb28uY2FwYWNpdHkoKSkgewogICAgICAgICAgICAgICAgc3ogPSBmb28uY2FwYWNpdHkoKTsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiY2FwYWNpdHkgY2hhbmdlZDogIiA8PCBzeiA8PCAiLCAiIDw8IGkgPDwgIlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBiYXI7CiAgICAgICAgc3ogPSBiYXIuY2FwYWNpdHkoKTsKICAgICAgICBiYXIucmVzZXJ2ZSgxMDApOyAgIC8vIHRoaXMgaXMgdGhlIG9ubHkgZGlmZmVyZW5jZSB3aXRoIGZvbyBhYm92ZQogICAgICAgIHN0ZDo6Y291dCA8PCAibWFraW5nIGJhciBncm93OlxuIjsKICAgICAgICBmb3IgKGludCBpPTA7IGk8MTAwOyArK2kpIHsKICAgICAgICAgICAgYmFyLnB1c2hfYmFjayhpKTsKICAgICAgICAgICAgaWYgKHN6IT1iYXIuY2FwYWNpdHkoKSkgewogICAgICAgICAgICAgICAgc3ogPSBiYXIuY2FwYWNpdHkoKTsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiY2FwYWNpdHkgY2hhbmdlZDogIiA8PCBzeiA8PCAnXG4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAwOwogICAgfQ==
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