How to find all symmetric pairs in an array of pairs with C++

1 Answer

0 votes
#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}
 
*/

 



answered Aug 6, 2022 by avibootz
edited Aug 6, 2022 by avibootz
...