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