Перевод этой страницы?:

Конструкторы вектора

Синтаксис:

    #include <vector>
    vector();
    vector( const vector& c );
    vector( size_type num, const T& val = T() );
    template< typename input_iterator >
    vector( input_iterator start, input_iterator end );
    ~vector();

Конструктор по умолчанию не принимает аргументов, он создает новый экземпляр вектора.

Второй конструктор - конструктор копирования по умолчанию, использующийся для создания нового вектора как копии другого.

Третий конструктор создает вектор с num объектами. Если val объявлена, то каждый из этих объектов будет инициализирован ее значением; в противном случае объекты получат значение конструктора по умолчанию типа T. Например, следующий код создает вектор, состоящий из пяти копий целого числа 42:

   vector<int> v1( 5, 42 );

Последний конструктор создает вектор, состоящий из элементов между start и end. Пример:

   // создаем вектор из случайных чисел
   cout << "первоначальный вектор: ";
   vector<int> v;
   for( int i = 0; i < 10; ++i ) {
     int num = (int) rand() % 10;
     cout << num << " ";
     v.push_back( num );
   }
   cout << endl;
 
   // находим первый четный элемент v
   vector<int>::iterator iter1 = v.begin();
   while( iter1 != v.end() && *iter1 % 2 != 0 ) {
     ++iter1;
   }
 
   // находим последний четный элемент v
   vector<int>::iterator iter2 = v.end();
   do {
     --iter2;
   } while( iter2 != v.begin() && *iter2 % 2 != 0 );
 
   // продолжаем, только если нашли оба значения
   if( iter1 != v.end() && iter2 != v.begin() ) {
     cout << "первый четный элемент: " << *iter1 << ", последний четный элемент: " << *iter2 << endl;
 
     cout << "новый вектор: ";
     vector<int> v2( iter1, iter2 );
     for( int i = 0; i < v2.size(); ++i ) {
       cout << v2[i] << " ";
     }
     cout << endl;
   }

После запуска код выводит:

   первоначальный вектор: 1 9 7 9 2 7 2 1 9 8
   первый четный элемент: 2, последний четный элемент: 8
   new vector: 2 7 2 1 9

Все конструкторы выполняются за линейное время, кроме первого, который выполняется за константное время.

Когда вектор удаляется, для каждого его элемента вызывается деструктор по умолчанию.