list::insert (STL Sample)

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

Required Header:
<list>

Prototype:

     iterator insert(iterator it, const T& x = T());
     void insert(iterator it, size_type n, const T& x);
     void insert(iterator it, const_iterator first, const_iterator last);
     void insert(iterator it, const T *first, const T *last);

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:
Each of the member functions inserts, after the element pointed to by it in the controlled sequence, a sequence specified by the remaining operands. The first member function inserts a single element with value x and returns an iterator that points to the newly inserted element. The second member function inserts a repetition of n elements of value x. The last two member functions insert the sequence [first, last).

Sample Code:

//////////////////////////////////////////////////////////////////////
//
// Compile options needed: -GX
//
// insert.cpp :  Shows the various ways to insert elements into a
//               list<T>.
//
// Functions:
//
//    list::insert
//////////////////////////////////////////////////////////////////////

#include <list>
#include <iostream>

using namespace std ;

typedef list<int> LISTINT;

void main()
{
    int rgTest1[] = {5,6,7};
    int rgTest2[] = {10,11,12};

    LISTINT listInt;
    LISTINT listAnother;
    LISTINT::iterator i;

    // Insert one at a time
    listInt.insert (listInt.begin(), 2);
    listInt.insert (listInt.begin(), 1);
    listInt.insert (listInt.end(), 3);

    // 1 2 3
    for (i = listInt.begin(); i != listInt.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // Insert 3 fours
    listInt.insert (listInt.end(), 3, 4);

    // 1 2 3 4 4 4
    for (i = listInt.begin(); i != listInt.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // Insert an array in there
    listInt.insert (listInt.end(), rgTest1, rgTest1 + 3);

    // 1 2 3 4 4 4 5 6 7
    for (i = listInt.begin(); i != listInt.end(); ++i)
        cout << *i << " ";
    cout << endl;

    // Insert another LISTINT
    listAnother.insert (listAnother.begin(), rgTest2, rgTest2+3);
    listInt.insert (listInt.end(), listAnother.begin(), listAnother.end());

    // 1 2 3 4 4 4 5 6 7 10 11 12
    for (i = listInt.begin(); i != listInt.end(); ++i)
        cout << *i << " ";
    cout << endl;
}

 

Program Output is:

1 2 3
1 2 3 4 4 4
1 2 3 4 4 4 5 6 7
1 2 3 4 4 4 5 6 7 10 11 12