Set Containment
template <class I1, class I2>
bool g_subset_of (I1 beg1, I1 end1, I2 beg2, I2 end2)
// returns true iff range 1 is contained in range 2
{
while (beg1 != end1 && beg2 != end2)
if ((*beg1) < (*beg2)) // *beg1 lies below *beg2 in value_type
return 0;
else if ((*beg2) < (*beg1)) // *beg1 lies above *beg2 in value_type
++beg2;
else // *beg1 == *beg2
++beg1, ++beg2;
if (beg1 == end1) // all elements of range1 have been found in range2
return 1;
return 0; // or not
}