Конструкторы списка

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

Синтаксис:

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

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

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

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

   list <int> l1( 5, 42 );

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

   // создаем список из случайных чисел
   cout << "первоначальный список: ";
   list<int> l;
   for( int i = 0; i < 20; i++ ) {
     int num = (int) rand() % 10;
     cout << num << " ";
     l.push_back( num );
   }
   cout << endl;
 
    // удаляем 5 и 7
   list<int>::iterator iter1 = l.begin();
   while( iter1 != l.end() ) {
     list<int>::iterator thisone = iter1;
     iter1++;
     if ( *thisone == 5 || *thisone == 7 ) {
		cout << "удалили " << *thisone << endl;
		l.erase( thisone );
	 }
   }
 
    // находим первый четный элемент l
   list<int>::iterator iter2 = l.begin();
   while( iter2 != l.end() && *iter2 % 2 != 0 ) {
     iter2++;
   }
 
   // находим последний четный элемент l
   list<int>::iterator iter3 = l.end();
   do {
     iter3--;
   } while( iter3 != l.begin() && *iter3 % 2 != 0 );
 
   cout << "первый четный элемент: " << *iter2 << ", последний четный элемент: " << *iter3 << endl;
 
   cout << "новый список: ";
   list<int> l2( iter2, iter3 );
   list<int>::iterator iter4 = l2.begin();
   while( iter4 != l2.end() ) {
     cout << *iter4 << " ";
	 iter4++;
   }
   cout << endl;

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

   первоначальный список: 7 9 3 8 0 2 4 8 3 9 0 5 2 2 7 3 7 9 0 2 
   удалили 7
   удалили 5
   удалили 7
   удалили 7
   первый четный элемент: 8, последний четный элемент: 2
   новый список: 8 0 2 4 8 3 9 0 2 2 3 9 0

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

Деструктор списка по умолчанию последовательно вызывает деструктор для каждого объекта списка.

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