list::list (STL Sample)

The sample code below illustrates how to use the list::list STL function in Visual C++.

Required Header:
<list>

Prototype:

     explicit list(const A& al = A());
     explicit list(size_type n, const T& v = T(), const A& al = A());
     list(const list& x);
     list(const_iterator first, const_iterator last, const A& al = A());

Note: The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.

Description:
The first constructor specifies an empty initial controlled sequence. The second constructor specifies a repetition of n elements of value x. The third constructor specifies a copy of the sequence controlled by x. The last constructor specifies the sequence [first, last). All constructors store the allocator object 'al', or for the copy constructor, the return value of 'x.get_allocator()', in the data member 'allocator' and initialize the controlled sequence.

Sample Code:

//////////////////////////////////////////////////////////////////////
//
// Compile options needed: -GX
//
// list.cpp : demonstrates the different constructors for list<T>
//
// Functions:
//
//    list::list
//////////////////////////////////////////////////////////////////////

#include <list>
#include <string>
#include <iostream>

using namespace std ;

typedef list<string> LISTSTR;

// Try each of the four constructors
void main()
{
    LISTSTR::iterator i;
    LISTSTR test;                   // default constructor

    test.insert(test.end(), "one");
    test.insert(test.end(), "two");

    LISTSTR test2(test);            // construct from another list
    LISTSTR test3(3, "three");      // add several <T>'s
    LISTSTR test4(++test3.begin(),  // add part of another list
             test3.end());

    // Print them all out

    // one two
    for (i =  test.begin(); i != test.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // one two
    for (i =  test2.begin(); i != test2.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // three three three
    for (i =  test3.begin(); i != test3.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // three three
    for (i =  test4.begin(); i != test4.end(); ++i)
        cout << *i << " ";
    cout << endl;
}

 

Program Output is:

one two
one two
three three three
three three