2017-05-30 3 views
0

ペアをキーとして順序付けられていないマップを作成しようとしています。C++標準ではこのタイプのハッシュを提供していません

struct pair_hash { 
     template <class T1, class T2> 
     std::size_t operator() (const std::pair<T1, T2> &p) const { 
      auto h1 = std::hash<T1>{}(p.first); 
      auto h2 = std::hash<T2>{}(p.second); 

      return h1^h2; 
     } 
    }; 

int wmain(int argc, wchar_t * argv[]) 
{ 
    {...} 

    using Key = std::pair<DWORD, DWORDLONG>; 
    std::unordered_map<Key, USN, pair_hash> mymap; 


    std::pair<DWORD, DWORDLONG> mypair(dwVolSN, fileId); 

    mymap.insert({ mypair, usn }); 

    std::unordered_map<Key, USN>::const_iterator got; 
    got = mymap.find(mypair); // HERE I GET THE ERROR 

    return 0 

} 
+2

あなたの質問は何を試してみてください。これは私にとって新しい何かが私はいくつかのチュートリアルに続き、私がこれを書いたのですか? – 0x5453

+0

mymap.find(mypair)の結果を "got"に渡す方法がわかりません。ビルド時に次のエラーが発生します。C++標準ではこのタイプのハッシュを提供していません –

答えて

8

std::unordered_map<Key, USN,pair_hash>::const_iterator got;

またはauto got = mymap.find(mypair);

+0

ありがとう!それは問題だった、私は "pair_hash"を忘れているのを見なかった!私は1時間ここで立ち往生した!ありがとうございました! –

関連する問題