Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để tạo một bản đồ không có thứ tự của các cặp trong C ++?


Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu cách tạo một bản đồ không có thứ tự của các cặp trong C ++.

Bản đồ không có thứ tự là những bản đồ không chứa hàm băm cho các cặp theo mặc định. Nếu chúng ta muốn một giá trị băm cho một cặp cụ thể, nó cần phải được chuyển một cách rõ ràng.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//to hash any given pair
struct hash_pair {
   template <class T1, class T2>
   size_t operator()(const pair<T1, T2>& p) const{
      auto hash1 = hash<T1>{}(p.first);
      auto hash2 = hash<T2>{}(p.second);
      return hash1 ^ hash2;
   }
};
int main(){
   //explicitly sending hash function
   unordered_map<pair<int, int>, bool, hash_pair> um;
   //creating some pairs to be used as keys
   pair<int, int> p1(1000, 2000);
   pair<int, int> p2(2000, 3000);
   pair<int, int> p3(2005, 3005);
   um[p1] = true;
   um[p2] = false;
   um[p3] = true;
   cout << "Contents of the unordered_map : \n";
   for (auto p : um)
      cout << "[" << (p.first).first << ", "<< (p.first).second << "] ==> " << p.second << "\n";
   return 0;
}

Đầu ra

Contents of the unordered_map :
[1000, 2000] ==> 1
[2005, 3005] ==> 1
[2000, 3000] ==> 0