2010-08-05 70 views
1

我想写一个C++函数来匹配字符串是否存在于字典中。它可以是部分字符串或完整字符串。所以我读了每一行成特里需要一些C++ Trie数据结构的帮助

  trie< std::string, int > dict; 
      dict.insert(make_pair(line,i++)); 
      // when i search for a string it always returns invalid. 
      if(dict.find("AA")!=dict.end()) 
       cout<<valid<<endl; 
      else 
       cout<<invalid<<endl; 

有人可以帮我这个。我添加了在词典中阅读单词的代码。

if(myfile.is_open()) 
{ 

     int i=0; 
    string line; 

     cout<<dict.size()<<endl; 
     while(!myfile.eof()) 
    { 
     getline(myfile,line); 
     dict.insert(make_pair(line,i++)); 



    } 
} 
+0

如果不知道必要的声明和变量,这个问题是不可能合理回答的 – Anycorn 2010-08-05 00:20:20

+0

@aaa我用getline读一行,我检查了字典的大小,发现它是179000.使用dict.find后,我检查它是什么返回使用它= dict.find(“AA”); (* it)。second的值返回如23880300 – brett 2010-08-05 00:22:54

+0

作业?无论如何,这个问题是无法回答的 - 你应该清楚地说明你想要什么。在我看来,你已经完成了你想要的。 – jpalecek 2010-08-05 00:23:14

回答

0

如果您使用this triethis sample code表示你需要在你的声明更多的模板参数来告诉它如何分割了键,以便它可以做的线索索引,特别是前缀搜索:

trie< std::string, int, string_trie_e_access_traits<>, pat_trie_tag, trie_prefix_search_node_update> dict; 

还要注意在链接的示例代码的搜索功能中使用prefix_range