set::swap, begin, end (STL Sample)

The sample code below illustrates how to use the set::(swap, begin, end) STL functions in Visual C++.

Required Header:
<set>

Prototype:

template<class _K, class _Pr, class _A>
    class set
    {
        public:
        // Function 1:
        void swap(_Myt& _X);
        // Function 2:
        friend void swap(_Myt& _X, _Myt& _Y);
        // Function 3:
        const_iterator begin() const;
        // Function 4:
        const_iterator end() const;
     }

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 swap function swaps the two controlled sequences. The begin function returns a bidirectional iterator that points at the first element of the sequence. The end function returns a bidirectional iterator that points just beyond the end of the sequence.

Sample Code:

//////////////////////////////////////////////////////////////////////
//
// Compile options needed: -GX
//
// SetSwapBeginEnd.cpp:
//      Illustrates how to use the swap function to exchange the two
//      controlled sequences. It also illustrates how to use the
//      begin function to get a bidirectional iterator that points at
//      the first element of the controlled sequence. Finally, it
//      illustrates how to use the end function to get a bidirectional
//      iterator that points just beyond the end of the controlled
//      sequence.
//
// Functions:
//
//    swap        Exchanges the two controlled sequences.
//    begin       Returns a bidirectional iterator that points at the
//                first element of the controlled sequence.
//    end         Returns a bidirectional iterator that points just
//                beyond the end of the controlled sequence.
//
//////////////////////////////////////////////////////////////////////

#pragma warning(disable:4786)
#include <set>
#include <iostream>

using namespace std ;

typedef set<int> SET_INT;

void main() {
  SET_INT s1;
  SET_INT s2;
  SET_INT::iterator i;
  cout << "s1.insert(5)" << endl;
  s1.insert(5);
  cout << "s1.insert(10)" << endl;
  s1.insert(10);
  cout << "s1.insert(15)" << endl;
  s1.insert(15);
  cout << "s2.insert(2)" << endl;
  s2.insert(2);
  cout << "s2.insert(4)" << endl;
  s2.insert(4);

  cout << "swap(s1,s2)" << endl;
  swap(s1,s2);

  // Displays: 2,4
  for (i=s1.begin();i!=s1.end();i++)
     cout << "s1 has " << *i << " in its set." << endl;

  // Displays: 5,10,15
  for (i=s2.begin();i!=s2.end();i++)
     cout << "s2 has " << *i << " in its set." << endl;

  cout << "s1.swap(s2)" << endl;
  s1.swap(s2);

  // Displays: 5,10,15
  for (i=s1.begin();i!=s1.end();i++)
     cout << "s1 has " << *i << " in its set." << endl;

  // Displays: 2,4
  for (i=s2.begin();i!=s2.end();i++)
     cout << "s2 has " << *i << " in its set." << endl;
}

 

Program Output is:


s1.insert(5)
s1.insert(10)
s1.insert(15)
s2.insert(2)
s2.insert(4)
swap(s1,s2)
s1 has 2 in its set.
s1 has 4 in its set.
s2 has 5 in its set.
s2 has 10 in its set.
s2 has 15 in its set.
s1.swap(s2)
s1 has 5 in its set.
s1 has 10 in its set.
s1 has 15 in its set.
s2 has 2 in its set.
s2 has 4 in its set.