C++ Tutorial/vector/vector reserve — различия между версиями

Материал из C\C++ эксперт
Перейти к: навигация, поиск
м (1 версия: Импорт контента...)
 
м (1 версия: Импорт контента...)
 
(нет различий)

Текущая версия на 10:29, 25 мая 2010

Ensure there"s room for at least 1000 elements

#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> INTVECTOR;
int main(void)
 {
   // Dynamically allocated vector begins with 0 elements.
   INTVECTOR theVector;
   theVector.push_back(42);
   // Ensure there"s room for at least 1000 elements.
   theVector.reserve(1000);
   cout << endl << "After reserving storage for 1000 elements:" << endl;
   cout << "theVector"s size is: " << theVector.size() << endl;
   cout << "theVector"s maximum size is: " << theVector.max_size()<< endl;
   cout << "theVector"s capacity is: " << theVector.capacity() << endl;
 }

Reserve memory for five elements to avoid reallocation

/* The following code example is taken from the book
 * "The C++ Standard Library - A Tutorial and Reference"
 * by Nicolai M. Josuttis, Addison-Wesley, 1999
 *
 * (C) Copyright Nicolai M. Josuttis 1999.
 * Permission to copy, use, modify, sell and distribute this software
 * is granted provided this copyright notice appears in all copies.
 * This software is provided "as is" without express or implied
 * warranty, and with no claim as to its suitability for any purpose.
 */
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
    // create empty vector for strings
    vector<string> sentence;
    // reserve memory for five elements to avoid reallocation
    sentence.reserve(5);
    // append some elements
    sentence.push_back("Hello,");
    sentence.push_back("how");
    sentence.push_back("are");
    sentence.push_back("you");
    sentence.push_back("?");
    // print elements separated with spaces
    copy (sentence.begin(), sentence.end(),
          ostream_iterator<string>(cout," "));
    cout << endl;
}
Hello, how are you ?

Reserving Space in a Vector

#include <vector>
using namespace std;
int main( )
{
   // fill a vector with one million numbers the slow way
   vector<int> v1;
   for( int i = 0; i < 1000000; ++i )
      v1.push_back( i );
   // fill a vector with one million numbers the fast way
   vector<int> v2;        // has zero elements
   v2.reserve( 1000000 ); // still has zero elements
   for( int i = 0; i < 1000000; ++i )
      v2.push_back( i );
}