C/C++

Программирование C++, 1 курс, практика

Помогите пожалуйста решить практику:
Заданы два множества точек на плоскости. Построить пересечение и разность этих множеств.
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <set>
using namespace std;
struct Point {
int x;
int y;
private:
friend bool operator<(const Point& a, const Point& b) {
return a.x < b.x || a.x == b.x && a.y < b.y;
}
friend ostream& operator<<(ostream& out, const Point& p) {
out << setw(4) << p.x << setw(4) << p.y;
return out;
}
};
int main() {
uniform_int_distribution<> uid(-5, 5);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
const auto length = 25U;
set<Point> set_a;
set<Point> set_b;
for (auto i = 0U; i < length; ++i) {
set_a.emplace(Point{ rand(), rand() });
set_b.emplace(Point{ rand(), rand() });
}
puts("Set A:");
for (const auto& point : set_a) cout << point << '\n';
puts("Set B:");
for (const auto& point : set_b) cout << point << '\n';
set<Point> set_i;
set_intersection(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_i, set_i.end()));
puts("Set intersection:");
for (const auto& point : set_i) cout << point << '\n';
set<Point> set_d;
set_difference(set_a.begin(), set_a.end(), set_b.begin(), set_b.end(), inserter(set_d, set_d.end()));
puts("Set difference:");
for (const auto& point : set_d) cout << point << '\n';
}
Олег Трубицин
Олег Трубицин
58 453
Лучший ответ
https://www.cplusplus.com/reference/algorithm/set_intersection/
Воспользуйтесь алгоритмом стандартной библиотеки set_intersection.
Заодно учтите, что есть такие операции как set_union, set_difference, set_symmetric_difference
А я спать...или ты думал, что я за тебя делать буду?