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