add find xxx in trie

This commit is contained in:
gwdwyy 2013-07-05 11:44:50 +08:00
parent a36782ca76
commit 03dfe02b12
3 changed files with 24 additions and 1 deletions

View File

@ -33,7 +33,11 @@ $(CMLIB): $(CMDIR)
#unit test
Trie.ut: Trie.cpp Trie.h $(CMLIB)
g++ -o $@ $< -DTRIE_UT $(CMLIB)
$(CC) -o $@ $< -DTRIE_UT $(CMLIB)
Segment.ut: Segment.cpp Trie.cpp Segment.h Trie.h $(CMLIB)
$(CC) -o $@ Segment.cpp Trie.cpp -DSEGMENT_UT $(CMLIB)
clean:
rm -f *.o *.ut $(CMLIB) main

View File

@ -91,6 +91,24 @@ namespace CppJieba
return p->isLeaf;
}
bool Trie::find(const vector<ChUnicode>& uniVec)
{
TrieNode * p = _root;
for(size_t i = 0; i < uniVec.size(); i++)
{
ChUnicode chUni = uniVec[i];
if(p->hmap.find(chUni) == p->hmap.end())
{
return false;
}
else
{
p = p-> hmap[chUni];
}
}
return p->isLeaf;
}
bool Trie::cut(const ChUnicode* chUniStr, size_t len, vector< vector<size_t> >& res)
{
res.clear();

1
Trie.h
View File

@ -96,6 +96,7 @@ namespace CppJieba
bool destroy();
void display();
bool find(const ChUnicode* chUniStr, size_t len);
bool find(const vector<ChUnicode>& uniVec);
public:
bool cut(const ChUnicode* chUniStr, size_t len, vector< vector<size_t> >& res);