INFO: STL Sample for the operator == and operato

ID: Q156790


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 operator== and operator< STL functions for the deque container class in Visual C++.


MORE INFORMATION

Required Header


   < deque> 

Prototype


   template<class T, class A>

       bool operator==(
           const deque <T, A>& lhs,
           const deque <T, A>& rhs);

   template<class T, class A>

       bool operator<(
           const deque <T, A>& lhs,
           const deque <T, A>& rhs); 
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 first template function overloads operator== to compare two objects of template class deque. The function returns:

   lhs.size() == rhs.size() && equal(lhs. begin(), lhs. end(),
   rhs.begin()). 
For equality, the number of elements must be equal in both the deque objects.

The second template function overloads operator< to compare two objects of template class deque. The function returns:

   lexicographical_compare(lhs. begin(), lhs. end(), rhs.begin(),
   rhs.end()). 
Because lexicographic (as in a dictionary) compare is used, the number of elements does not matter while using operator<. In the sample code, adding a line of code while creating the b object, such as b.push_front('D');, will make b greater than a.

Sample Code


   ////////////////////////////////////////////////////////////////////// 
   // 
   // Compile options needed: -GX
   // 
   // deque.cpp :
   // 
   // Functions:
   // 
   //    ==
   //    <
   // 
   // 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 a  with  3 A's
       CHARDEQUE  a(3,'A');
       a.push_front('C');

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

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

       //compare a and b
       if (a==b)
           cout <<"a is equal to b"<<endl;
       else if(a<b)
               cout <<"a is less than b"<<endl;
       else
           cout <<"a is greater than b" <<endl;

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

       //compare a and b again
       if (a==b)
           cout <<"a is equal to b"<<endl;
       else if(a<b)
               cout <<"a is less than b"<<endl;
       else
           cout <<"a is greater than b" <<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:

   The contents of a : C A A A
   The contents of b : B B B B B B
   a is greater than b
   The contents of a : B B B B B B
   The contents of b : B B B B B B
   a is equal to b 


REFERENCES

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

Additional query words: STL STLSample deque ==

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


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