INFO: Sample of deque: operator[] and deque::at Functions

ID: Q156902


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, versions 4.2, 5.0, 6.0


SUMMARY

The sample code below illustrates how to use the deque::operator[], deque::at, deque::empty, deque::push_back, and deque::end, STL functions in Visual C++.


MORE INFORMATION

Required Header


   < deque> 

Prototype


   const_reference operator[](size_type pos) const;
   reference operator[](size_type pos);
   const_reference operator[](difference_type _N) const;
   reference operator[](difference_type _N) const;

   const_reference at(size_type pos) const;
   reference at(size_type pos);

   bool empty() const; 
NOTE: The class/parameter names in the prototype may not match the version in the header file. Some have been modified to improve readability.

Description

The member function operator[] returns a reference to the element of the controlled sequence at position pos. If that position is invalid, the behavior is undefined.

The member function at returns a reference to the element of the controlled sequence at position pos. If that position is invalid, the function throws an object of class out_of_range.

The member function empty returns true for an empty controlled sequence.

Sample Code


////////////////////////////////////////////////////////////////////// 
// 
// Compile options needed: -GX
// 
// deque.cpp :
// 
// Functions:
// 
//    operator[]
//    at
//    empty
//    push_back
//    begin
//    end
// 
// Written by Bobby Mattappally
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////// 

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

#if _MSC_VER > 1020   // if VC++ version is > 4.2
   using namespace std;  // std c++ libs implemented in std
   #endif

typedef deque<char, allocator<char> >  CHARDEQUE;

void print_contents (CHARDEQUE  deque, char*);

void main()

{

    //create an empty deque a
    CHARDEQUE  a;

    //check whether it is empty
    if(a.empty())
        cout<<"a is empty"<<endl;
    else
        cout<<"a is not empty"<<endl;

    //inset A, B, C and D  to a
    a.push_back('A');
    a.push_back('B');
    a.push_back('C');
    a.push_back('D');

    //check again whether a is empty
    if(a.empty())
        cout<<"a is empty"<<endl;
    else
        cout<<"a is not empty"<<endl;

    //print out the contents

    print_contents (a,"a");

    cout <<"The first element of a is  " <<a[0] <<endl;
    cout <<"The first element of a is  " <<a.at(0) <<endl;

    cout <<"The last element of a is  " <<a[a.size()-1] <<endl;
    cout <<"The last element of a is  " <<a.at(a.size()-1) <<endl;

}

//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:

a is empty
a is not empty
The contents of a : A B C D
The first element of a is  A
The first element of a is  A
The last element of a is  D
The last element of a is  D 


REFERENCES

Visual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.

Additional query words: STL STLSample deque operator[] at empty push_back begin end

Keywords : kbcode kbVC420 kbVC500 kbVC600 kbDSupport STLIss
Version : winnt:4.2,5.0,6.0
Platform : winnt
Issue type : kbinfo


Last Reviewed: November 23, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.