#include <iostream>
#include <unordered_set>
struct Pair {
int x, y;
};
template<typename T, size_t pair_size> void findPairs(T const(& pair)[pair_size]) {
std::unordered_set<std::string> uset;
for (int i = 0; i < pair_size; i++) {
std::string onepair = "{" + std::to_string(pair[i].x) + ", " + std::to_string(pair[i].y) + "}";
uset.insert(onepair);
std::string reverse_onepair = "{" + std::to_string(pair[i].y) + ", " + std::to_string(pair[i].x) + "}";
if (uset.find(reverse_onepair) != uset.end()) {
std::cout << onepair << " - " << reverse_onepair << "\n";
}
}
}
int main()
{
Pair pair[] = { {7, 2}, {1, 8}, {5, 1}, {9, 3}, {2, 7}, {1, 5}, {4, 6} };
findPairs(pair);
}
/*
run:
{2, 7} - {7, 2}
{1, 5} - {5, 1}
*/