次のように定義されたカスタム equal_to 関数を使用する int への順序付けられていないマップ文字列があります。
bool hashEqual::operator ()(const string &a, const string &b) const
{
if (a.size() != b.size())
return false;
return std::inner_product(
a.begin(), a.end(), b.begin(),
0, std::plus<unsigned int>(),
std::not2(std::equal_to<std::string::value_type>())
) <= 8;
}
基本的には、2 つのキーのハミング距離が 8 以下であれば、同じキーになります。
問題は、ユーザーがコマンドラインから設定できるように、距離のしきい値を動的にすることです。8 の代わりに、可変しきい値またはこのようなものです。
私はグローバル変数のようなハックを探しているのではなく (それがこれを達成する唯一の方法でない限り)、「良い方法」を探しています。