mirror of
https://github.com/yanyiwu/cppjieba.git
synced 2025-07-18 00:00:12 +08:00
remove trie.find(xx,xx, vector)
This commit is contained in:
parent
f254691e53
commit
bfbd63f3e8
@ -48,7 +48,7 @@ namespace CppJieba
|
|||||||
}
|
}
|
||||||
|
|
||||||
//resut of searching in trie tree
|
//resut of searching in trie tree
|
||||||
vector<pair<size_t, const TrieNodeInfo*> > tRes;
|
DagType tRes;
|
||||||
|
|
||||||
//max index of res's words
|
//max index of res's words
|
||||||
int maxIdx = 0;
|
int maxIdx = 0;
|
||||||
@ -61,9 +61,10 @@ namespace CppJieba
|
|||||||
for (Unicode::const_iterator uItr = begin; uItr != end; uItr++)
|
for (Unicode::const_iterator uItr = begin; uItr != end; uItr++)
|
||||||
{
|
{
|
||||||
//find word start from uItr
|
//find word start from uItr
|
||||||
if (_trie.find(uItr, end, tRes))
|
if (_trie.find(uItr, end, 0, tRes))
|
||||||
{
|
{
|
||||||
for (vector<pair<size_t, const TrieNodeInfo*> >::const_iterator itr = tRes.begin(); itr != tRes.end(); itr++)
|
for(DagType::const_iterator itr = tRes.begin(); itr != tRes.end(); itr++)
|
||||||
|
//for (vector<pair<size_t, const TrieNodeInfo*> >::const_iterator itr = tRes.begin(); itr != tRes.end(); itr++)
|
||||||
{
|
{
|
||||||
wordLen = itr->second->word.size();
|
wordLen = itr->second->word.size();
|
||||||
if (wordLen >= 2 || (tRes.size() == 1 && maxIdx <= uIdx))
|
if (wordLen >= 2 || (tRes.size() == 1 && maxIdx <= uIdx))
|
||||||
|
20
src/Trie.hpp
20
src/Trie.hpp
@ -118,26 +118,6 @@ namespace CppJieba
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool find(Unicode::const_iterator begin, Unicode::const_iterator end, vector<pair<size_t, const TrieNodeInfo*> >& res) const
|
|
||||||
{
|
|
||||||
TrieNodeMap::const_iterator citer;
|
|
||||||
TrieNode* p = _root;
|
|
||||||
for (Unicode::const_iterator itr = begin; itr != end; itr++)
|
|
||||||
{
|
|
||||||
citer = p->hmap.find(*itr);
|
|
||||||
if(p->hmap.end() == citer)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
p = citer->second;
|
|
||||||
if(p->isLeaf)
|
|
||||||
{
|
|
||||||
res.push_back(make_pair(itr-begin, p->ptTrieNodeInfo));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return !res.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool find(Unicode::const_iterator begin, Unicode::const_iterator end, size_t offset, DagType & res) const
|
bool find(Unicode::const_iterator begin, Unicode::const_iterator end, size_t offset, DagType & res) const
|
||||||
{
|
{
|
||||||
TrieNode* p = _root;
|
TrieNode* p = _root;
|
||||||
|
@ -40,8 +40,6 @@ TEST(TrieTest, Test1)
|
|||||||
vector<pair<size_t, const TrieNodeInfo*> > vec;
|
vector<pair<size_t, const TrieNodeInfo*> > vec;
|
||||||
ASSERT_TRUE(TransCode::decode(word, uni));
|
ASSERT_TRUE(TransCode::decode(word, uni));
|
||||||
//print(uni);
|
//print(uni);
|
||||||
ASSERT_TRUE(trie.find(uni.begin(), uni.end(), vec));
|
|
||||||
ASSERT_EQ(vec, res);
|
|
||||||
ASSERT_TRUE(trie.find(uni.begin(), uni.end(), 0, map));
|
ASSERT_TRUE(trie.find(uni.begin(), uni.end(), 0, map));
|
||||||
ASSERT_EQ(map, resMap);
|
ASSERT_EQ(map, resMap);
|
||||||
// print(vec);
|
// print(vec);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user