Синтаксис:
#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
Все конструкторы выполняются за линейное время, кроме первого, который выполняется за константное время.
Когда вектор удаляется, для каждого его элемента вызывается деструктор по умолчанию.