=====List constructors===== Syntax: #include list(); list( const list& c ); explicit list( size_type num, const TYPE& val = TYPE() ); list( input_iterator start, input_iterator end ); ~list(); The default list constructor takes no arguments, creates a new instance of that list. The second constructor is a default copy constructor that can be used to create a new list that is a copy of the given list c. The third constructor creates a list with space for num objects. If val is specified, each of those objects will be given that value. For example, the following code creates a list consisting of five copies of the integer 42: list l1( 5, 42 ); The last constructor creates a list that is initialized to contain the elements between start and end. For example: // create a vector of random integers cout << "original list: "; list l; for( int i = 0; i < 20; i++ ) { int num = (int) rand() % 10; cout << num << " "; l.push_back( num ); } cout << endl; // delete 5 & 7 list::iterator iter1 = l.begin(); while( iter1 != l.end() ) { list::iterator thisone = iter1; ++iter1; if ( *thisone == 5 || *thisone == 7 ) { cout << "erase " << *thisone << endl; l.erase( thisone ); } } // find the first element of l that is even list::iterator iter2 = l.begin(); while( iter2 != l.end() && *iter2 % 2 != 0 ) { ++iter2; } // find the last element of l that is even list::iterator iter3 = l.end(); do { --iter3; } while( iter3 != l.begin() && *iter3 % 2 != 0 ); cout << "first even number: " << *iter2 << ", last even number: " << *iter3 << endl; cout << "new list: "; list l2( iter2, iter3 ); list::iterator iter4 = l2.begin(); while( iter4 != l2.end() ) { cout << *iter4 << " "; ++iter4; } cout << endl; When run, this code displays the following output: original list: 7 9 3 8 0 2 4 8 3 9 0 5 2 2 7 3 7 9 0 2 erase 7 erase 5 erase 7 erase 7 first even number: 8, last even number: 2 new list: 8 0 2 4 8 3 9 0 2 2 3 9 0 All of these constructors run in [[/complexity|linear time]] except the first, which runs in [[/complexity|constant time]]. The default destructor calls the destructor for each object in the list with linear complexity.