Стандартный способ пересечения двух наборов в С++ состоит в следующем:
std::set<int> set_1; // With some elements
std::set<int> set_2; // With some other elements
std::set<int> the_intersection; // Destination of intersect
std::set_intersection(set_1.begin(), set_1.end(), set_2.begin(), set_2.end(), std::inserter(the_intersection, the_intersection.end()));
Как мне заняться установкой пересечения на месте? То есть, я хочу, чтобы set_1 получил результаты вызова set_intersection. Очевидно, я могу просто сделать set_1.swap(the_intersection)
, но это намного менее эффективно, чем пересечение на месте.