Darts: Double-ARray Trie System

http://chasen.org/~taku/software/darts/

dartsというのは、Trie木をdouble arrayで実装したライブラリです。ヘッダファイル一つだけの配布なので大変使いやすい。

今回HAT-trieを実装してみるにあたって、Trie木の部分の実装としてこれを使ってみることにしました。

しかし、サンプルが動かない・・・・!どうやらよく見るとテンプレート周りとconstを付け加えた際に、もともとのサンプルが動かなくなった模様。
なので、これを修正しました。別に大したことはしていません。

CODE:
  1. #include <iostream>
  2. #include <darts.h>
  3.  
  4. int main (int argc, char **argv)
  5. {
  6. using namespace std;
  7.  
  8. const Darts::DoubleArray::key_type   *str[] = { "ALGOL", "ANSI", "ARCO""ARPA", "ARPANET", "ASCII" }; // same as char*
  9. Darts::DoubleArray::result_type val[] = { 1, 2, 3, 4, 5, 6 }; // same as int
  10.  
  11. Darts::DoubleArray da;
  12. da.build (6, str, 0, val);
  13.  
  14. cout <<da.exactMatchSearch<int>("ALGOL") <<endl;
  15. cout <<da.exactMatchSearch<int>("ANSI") <<endl;
  16. cout <<da.exactMatchSearch<int>("ARCO") <<endl;
  17. cout <<da.exactMatchSearch<int>("ARPA") <<endl;
  18. cout <<da.exactMatchSearch<int>("ARPANET") <<endl;
  19. cout <<da.exactMatchSearch<int>("ASCII") <<endl;
  20. cout <<da.exactMatchSearch<int>("APPARE") <<endl;
  21.  
  22. da.save("some_file");
  23. }