C++/Vector/vector capacity

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Demonstrating the STL vector capacity

<source lang="cpp">

  1. include <iostream>
  2. include <cassert>
  3. 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">


  1. include <iostream>
  2. include <cassert>
  3. 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>