Knowledge Base

How to use the member functions of the STL queue class in Visual C++

Article ID: 157622

Article Last Modified on 8/16/2005


APPLIES TO


This article was previously published under Q157622
NOTE: Microsoft Visual C++ .NET 2002 and Microsoft Visual C++ .NET 2003 supported both the managed code model that is provided by the .NET Framework and the unmanaged native Windows code model. The information in this article applies to unmanaged Visual C++ code only.

SUMMARY

The sample code below illustrates how to use the queue::push, queue::pop, queue::empty, queue::back, queue::front, and queue::size STL functions in Visual C++.

MORE INFORMATION

The queue adapter holds objects of the type defined by the type of container supported by the queue. The two containers supported are the list and the deque. Objects are inserted by push() and removed by pop(). front() returns the oldest item in the queue (also known as FIFO), and back() returns the latest item inserted in the queue.

Required Header

   <queue>
				
Prototypes
----------

   queue::push();
   queue::pop();
   queue::empty();
   queue::back();
   queue::front();
   queue::size();
				
NOTE: The class/parameter names in the prototypes may not match the version in the header file. Some have been modified to improve readability.

Description

The sample shows queue implementation using list and deque containers.

Sample Code

////////////////////////////////////////////////////////////////////// 
// 
// Compile options needed: none
// 
// <filename> :  queue.cpp
// 
// Functions:
// 
//    queue::push(), queue::pop(), queue::empty(), queue::back(),
//    queue::front(),queue::size()
// 
// Written by Debabrata Sarma
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////// 

/* Compile options needed: /GX
*/ 
#include <list>
#include <iostream>
#include <queue>
#include <deque>
using namespace std;

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

// Using queue with list

typedef list<int, allocator<int> > INTLIST;
typedef queue<int,INTLIST >  INTQUEUE;

// Using queue with deque

typedef deque<char*, allocator<char*> > CHARDEQUE;
typedef queue<char*,CHARDEQUE> CHARQUEUE;

void main(void)

{

    int size_q;
    INTQUEUE q;
    CHARQUEUE p;

    // Insert items in the queue(uses list)
    q.push(42);
    q.push(100);
    q.push(49);
    q.push(201);

    // Output the item inserted last using back()
    cout << q.back() << endl;

    // Output the size of queue
    size_q = q.size();
    cout << "size of q is:" << size_q << endl;

    // Output items in queue using front()
    // and use pop() to get to next item until
    // queue is empty
    while (!q.empty())
    {
        cout << q.front() << endl;
        q.pop();

    }

// Insert items in the queue(uses deque)
    p.push("cat");
    p.push("ape");
    p.push("dog");
    p.push("mouse");
    p.push("horse");

    // Output the item inserted last using back()
    cout << p.back() << endl;

    // Output the size of queue
    size_q = p.size();
    cout << "size of p is:" << size_q << endl;

    // Output items in queue using front()
    // and use pop() to get to next item until
    // queue is empty
    while (!p.empty())
    {
        cout << p.front() << endl;
        p.pop();

    }

} 
				
Program Output:
201
size of q is:4
42
100
49
201
horse
size of p is:5
cat
ape
dog
mouse
horse
				

REFERENCES

For the same information about member functions of the STL queue class, visit the following Microsoft Developer Network (MSDN) Web site:

Additional query words: STL STLSample push pop empty back front size

Keywords: kbhowto kbinfo kbtemplate kbstl kbcode KB157622