deque::assign and deque::swap (STL Sample)

The sample code below illustrates how to use the deque::assign and deque::swap STL functions in Visual C++.

Required Header:
< deque>

Prototype:

   void assign(const_iterator first, const_iterator last);
   void assign(size_type n, const T& x = T());
   void swap(deque& dq);

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 assign member function replaces the sequence controlled by *this with the sequence [first, last). The second assign member function replaces the sequence controlled by *this with a repetition of n elements of value x. The swap member function swaps the contents between *this and dq.

Sample Code:

//////////////////////////////////////////////////////////////////////
//
// Compile options needed: -GX
//
// deque.cpp :
//
// Functions:
//
//    assign
//    swap
//    begin
//    end
//////////////////////////////////////////////////////////////////////

/* Compile options needed:-GX
*/
#include <iostream>
#include <deque>

using namespace std;


typedef deque<char >  CHARDEQUE;
void print_contents (CHARDEQUE  deque, char*);

void main()
{
    //create a  with  3 A's
    CHARDEQUE  a(3,'A');

    //create b with 4 B's.
    CHARDEQUE  b(4,'B');

    //print out the contents
    print_contents (a,"a");
    print_contents (b,"b");

    //swap a and b
    a.swap(b);
    print_contents (a,"a");
    print_contents (b,"b");

    // let us swap it back
        a.swap(b);
    print_contents (a,"a");
    print_contents (b,"b");

    //assign the contents of b to a
    a.assign(b.begin(),b.end());
    print_contents (a,"a");

    //assign the first two items of b to a
    a.assign(b.begin(),b.begin()+2);
    print_contents (a,"a");

    //assign 3 'Z's to a
    a.assign(3,'Z');
    print_contents (a,"a");

    }

//function to print the contents of deque
void print_contents (CHARDEQUE  deque, char *name)
{
    CHARDEQUE::iterator pdeque;

    cout <<"The contents of "<< name <<" : ";

        for(pdeque = deque.begin();
        pdeque != deque.end();
        pdeque++)
    {
        cout << *pdeque <<" " ;
    }
        cout<<endl;
}

 

Program Output is:

The contents of a : A A A
The contents of b : B B B B
The contents of a : B B B B
The contents of b : A A A
The contents of a : A A A
The contents of b : B B B B
The contents of a : B B B B
The contents of a : B B
The contents of a : Z Z Z