C++/Vector/vector capacity
Demonstrating the STL vector capacity
<source lang="cpp">
- include <iostream>
- include <cassert>
- include <vector>
using namespace std; int main() {
int N = 10000; // size of vectors vector<int> vector1, vector2; for (int k = 0; k != N; ++k) { vector<int>::size_type cap = vector1.capacity(); vector1.push_back(k); if (vector1.capacity() != cap) cout << "k: " << k << ", new capacity: " << vector1.capacity() << endl; } return 0;
} /* k: 0, new capacity: 1 k: 1, new capacity: 2 k: 2, new capacity: 4 k: 4, new capacity: 8 k: 8, new capacity: 16 k: 16, new capacity: 32 k: 32, new capacity: 64 k: 64, new capacity: 128 k: 128, new capacity: 256 k: 256, new capacity: 512 k: 512, new capacity: 1024 k: 1024, new capacity: 2048 k: 2048, new capacity: 4096 k: 4096, new capacity: 8192 k: 8192, new capacity: 16384
*/ </source>
Demonstrating the STL vector capacity and reserve functions
<source lang="cpp">
- include <iostream>
- include <cassert>
- include <vector>
using namespace std; int main() {
int N = 10000; // size of vectors vector<int> vector1, vector2; for (int k = 0; k != N; ++k) { vector<int>::size_type cap = vector1.capacity(); vector1.push_back(k); if (vector1.capacity() != cap) cout << "k: " << k << ", new capacity: " << vector1.capacity() << endl; } vector2.reserve(N); for (int k = 0; k != N; ++k) { vector<int>::size_type cap = vector2.capacity(); vector2.push_back(k); if (vector2.capacity() != cap) cout << "k: " << k << ", new capacity: " << vector2.capacity() << "\n"; } return 0;
} /* k: 0, new capacity: 1 k: 1, new capacity: 2 k: 2, new capacity: 4 k: 4, new capacity: 8 k: 8, new capacity: 16 k: 16, new capacity: 32 k: 32, new capacity: 64 k: 64, new capacity: 128 k: 128, new capacity: 256 k: 256, new capacity: 512 k: 512, new capacity: 1024 k: 1024, new capacity: 2048 k: 2048, new capacity: 4096 k: 4096, new capacity: 8192 k: 8192, new capacity: 16384
*/ </source>