=====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.