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

Материал из cppreference.com
Перейти к: навигация, поиск

Синтаксис:

    #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

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

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

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты
На других языках