includes

Syntax:

    #include <algorithm>
 
    template< typename InIterA, typename InIterB >
    bool includes( InIterA start1, InIterA end1, InIterB start2, InIterB end2 );
 
    template< typename InIterA, typename InIterB, typename StrictWeakOrdering >
    bool includes( InIterA start1, InIterA end1, InIterB start2, InIterB end2, StrictWeakOrdering cmp );

The includes() algorithm returns true if every element in [start2,end2) is also in [start1,end1). Both of the given ranges must be sorted in ascending order. There is no requirement that every element in [start1,end1) or [start2,end2) be unique. If some element appears n times in [start2,end2), [start1,end1) must contain the equivalent element at least n times.

By default, the < operator is used to compare elements. If the strict weak ordering function object cmp is given, then it is used instead.

includes() runs in linear time.

 #include <iostream>
 #include <vector>
 #include <list>
 #include <algorithm>
 
 int main()
 {
   std::vector<int> vec;
   for (int i = 0; i < 10; ++i)
     vec.push_back(i);
 
   std::list<int> lst;
   lst.push_back(2);
   lst.push_back(4);
   lst.push_back(6);
 
   if (std::includes(vec.begin(), vec.end(), lst.begin(), lst.end()))
     std::cout << "lst is a subset of vec." << std::endl;
   else
     std::cout << "lst is NOT a subset of vec." << std::endl;
 
   return 0;
 }

Related Topics: set_difference, set_intersection, set_symmetric_difference, set_union