タグ

ブックマーク / sscrisk.hatenablog.com (1)

  • switch case で文字列を使う - とくにあぶなくないRiSKのブログ

    文字列のハッシュをconstexprで計算できればC++で文字列を使ったswitchができるんだけどなあと思ったけど,mpl::stringならコンパイル時にハッシュ値の計算できたりしないだろうか. 2011-01-14 19:48:06 via P3:PeraPeraPrv 「なるほどー」と思ったので文字列のハッシュを使う実験。 #include<string> #include<iostream> constexpr int hash(char const * s) { return *s ? *s + hash(s + 1) : 0; // 超絶てけとーハッシュ } int main() { for(std::string s; std::cin >> s;) switch(hash(s.c_str())) { case hash("foo"): std::cout << "case

    maraigue
    maraigue 2012/01/18
    文字列では普通switch - caseが出来ないのだが、constexprなハッシュ関数を使うとそれっぽいことが出来るという話。ハッシュ値の衝突という問題もあるけど、発想がすごい
  • 1