4

これは簡単かもしれませんが、これができるかどうかを理解したいだけです:

デフォルトではunordered_map(string, string)、2 つの文字列が等しいかどうかをチェックします。

ここで、等値演算子にもう 1 つの機能を追加すると、2 つの文字列が互いのアナグラムであっても true を返すとします。これを行うには、等値演算子のみを更新し、ハッシュを更新することはできません (デフォルトのハッシュを使用します)。

たとえば、次のファンクタのみを定義します。

bool operator() (const string& a, const string& b) const  
{  
    // check for anagram condition here  
}
4

2 に答える 2

-1

はい、デフォルトのハッシュ関数とカスタムの等号演算子を使用できます。ハッシュ std::hash と equal to をカスタム演算子として使用します。

template<
   class Key,
   class T,
   class Hash = std::hash<Key>,
   class KeyEqual = std::equal_to<Key>,
   class Allocator = std::allocator<std::pair<const Key, T>>
>     class unordered_map; 
于 2013-09-08T07:51:47.063 に答える