add iterator and bak

This commit is contained in:
wyy 2013-07-01 23:42:03 +08:00
parent 34c99994cb
commit ba0cdb3e92
2 changed files with 64 additions and 2 deletions

View File

@ -2,6 +2,16 @@
namespace CppJieba namespace CppJieba
{ {
Trie::iterator Trie::begin()
{
return Trie::iterator(_root);
}
Trie::iterator Trie::end()
{
return Trie::iterator(NULL);
}
Trie::Trie() Trie::Trie()
{ {
_root = NULL; _root = NULL;
@ -167,8 +177,11 @@ using namespace CppJieba;
int main() int main()
{ {
Trie trie; Trie trie;
//trie.init("test/dict.txt"); trie.init("test/dict.txt");
trie.init("dict.txt"); cout<<trie.begin()->count<<endl;
return 0;
//trie.init("dict.txt");
//trie.display(); //trie.display();
//const char * utf = "B"; //const char * utf = "B";
//ChUnicode chUniStr[16]; //ChUnicode chUniStr[16];

49
Trie.h
View File

@ -30,10 +30,59 @@ namespace CppJieba
} }
}; };
struct TrieNodeIterator
{
TrieNode* ptNode;
TrieNodeIterator():ptNode(NULL)
{
}
TrieNodeIterator(TrieNode* ptr):ptNode(NULL)
{
ptNode = ptr;
}
const int operator++(int)
{
return 1;
}
TrieNodeIterator& operator++()
{
return *this;
}
TrieNode& operator*() const
{
return *ptNode;
}
TrieNode* operator->() const
{
return ptNode;
}
bool operator==(const TrieNodeIterator& x) const
{
return ptNode == x.ptNode;
}
bool operator!=(const TrieNodeIterator& x) const
{
return ptNode != x.ptNode;
}
};
class Trie class Trie
{ {
private: private:
TrieNode* _root; TrieNode* _root;
public:
typedef TrieNodeIterator iterator;
public:
iterator begin();
iterator end();
public: public:
Trie(); Trie();
~Trie(); ~Trie();