Visual C++でちょっとハッシュ関数が欲しくなりました。VC++はhash_mapなどを持っているので、当然ハッシュ関数もあるだろうと睨んで正解、stdext名前空間にhash_value関数がありました。こんな感じに使えます。

#include <iostream>
#include <string>
#include <hash_set>
 
void print_hash(std::string const& s)
{
  std::cout << s << ": " << std::hex << stdext::hash_value(s) << std::endl;
}
 
int main()
{
  print_hash("ABC");
  print_hash("あいうえお");
}

このhash_value関数はstd::size_t型を返します。少なくともstd::string, std::wstring, char const*, wchar_t const*, 整数型などに使えるようです。

スポンサード リンク

この記事のカテゴリ

  • ⇒ とりあえず、仮に、今だけ