为了提高查找效率,这里将敏感词用树形结构存储,每个节点有一个map成员,其映射关系为一个string对应一个TreeNode。

STL::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。为了提高map的插入及查询效率,可以选用hash_map或unordered_map。关于他们的效率,可以参考http://blog.csdn.net/whizchen/article/details/9286557

下面主要实现了TreeNode类,进行节点的插入以及查询。(这里命名用Trie比较专业)

 1 #include<map>
 2 #include<string>
 3 //#include<unordered_map>  
 4 using namespace std;
 5 
 6 
 7 class Tree;
 8 class TreeNode
 9 {
10     friend class Tree;
11     typedef map<string,TreeNode> _TreeMap;
12     typedef map<string,TreeNode>::iterator _TreeMapIterator;
13 //     typedef unordered_map<string,TreeNode> _TreeMap;
14 //     typedef unordered_map<string,TreeNode>::iterator _TreeMapIterator;
15 private:
16     string m_character;
17     _TreeMap m_map;
18     TreeNode* m_parent;
19 public:
20     TreeNode(string character);
21     TreeNode(){
22         m_character="";
23     };
24     string getCharacter() const;
25     TreeNode* findChild(string& nextCharacter);
26     TreeNode* insertChild(string& nextCharacter);
27     
28 };
TreeNode.h

相关文章: