VMS Help
CXXLSTD, Algorithms, set_intersection

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   set_intersection  - Basic set	operation for sorted sequences.

 SYNOPSIS

   #include <algorithm>

   template <class InputIterator1, class	InputIterator2,
 	   class OutputIterator>
   OutputIterator
   set_intersection (InputIterator1 first1, InputIterator1 last1,
 		   InputIterator2 first2, InputIterator	last2,
 		   OutputIterator result);

   template <class InputIterator1, class	InputIterator2,
 	   class OutputIterator, class Compare>
   OutputIterator
   set_intersection (InputIterator1 first1, InputIterator1 last1,
 		   InputIterator2 first2, InputIterator2 last2,
 		   OutputIterator result, Compare comp);

 DESCRIPTION

   The set_intersection algorithm constructs a sorted intersection of
   elements from the two ranges.	It returns the end of the constructed
   range.  When it finds	an element present in both ranges,
   set_intersection always copies the element from the first range into
   result.  This means	that the result	of set_intersection is
   guaranteed to be stable.	 The result of set_intersection is
   undefined	if the result range overlaps with either of the
   original ranges.

   set_intersection assumes that	the ranges are sorted using the
   default	comparison operator less	than (<), unless an
   alternative	comparison operator (comp) is provided.

 COMPLEXITY

   At most ((last1 - first1) + (last2 - first2))	* 2 -1	comparisons are	per-
   formed.

 EXAMPLE

   //
   // set_intr.cpp
   //
    #include <algorithm>
    #include <set>
    #include <iostream.h>
   int main()
    {

      //Initialize some sets
     int	a1[10] = {1,3,5,7,9,11};
     int	a3[4]  = {3,5,7,8};
     set<int, less<int> > odd(a1, a1+6),
 			 result, small(a3,a3+4);

      //Create an insert_iterator for result
     insert_iterator<set<int, less<int> > >
 		  res_ins(result, result.begin());

      //Demonstrate set_intersection
     cout << "The result	of:" <<	endl <<	"{";
     copy(small.begin(),small.end(),
 	 ostream_iterator<int,char>(cout," "));
     cout << "} intersection {";
     copy(odd.begin(),odd.end(),
 	 ostream_iterator<int,char>(cout," "));
     cout << "} =" << endl << "{";
      set_intersection(small.begin(), small.end(),
 		    odd.begin(), odd.end(), res_ins);
     copy(result.begin(),result.end(),
 	 ostream_iterator<int,char>(cout," "));
     cout << "}"	<< endl	<< endl;

     return 0;
    }

   Output :
   The result of:
   {3 5 7 8 } intersection {1 3 5 7 9 11	} =
   {3 5 7 }

 WARNING

   If your compiler does	not support default template parameters, then
   you need to always supply	the Compare template argument and the
   Allocator	template	argument. For instance,	you will need
   to write :

   set<int, less<int> allocator<int> >

   instead of :

   set<int>

 SEE ALSO

   includes, set, set_union, set_difference, set_symmetric_difference

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help