FLImaging 6.5.8.1
Trie.h
1#pragma once
2#include <unordered_map>
3#include <string>
4#include <vector>
5
18namespace FLImaging
19{
21 namespace Foundation
22 {
33 class FL_EXPORT CTrieNode
34 {
35 public:
46
56 CTrieNode(const CTrieNode& rhs);
57
67 CTrieNode(const CTrieNode* pRhs);
68
76 virtual ~CTrieNode();
77
91 virtual const CResult Assign(const CTrieNode& rhs);
92
106 virtual const CResult Assign(const CTrieNode* pRhs);
107
117 virtual const CResult Clear();
118
119 virtual CTrieNode* DuplicateObject() const;
120 virtual CTrieNode* CreateObject() const;
121
122 public:
127 std::unordered_map<wchar_t, CTrieNode*>& m_mapChildren;
128
134
139 std::vector<std::wstring>& m_vctWstrWords;
140 };
141
152 class FL_EXPORT CTrie
153 {
154 public:
163
173 CTrie(const CTrie& rhs);
174
184 CTrie(const CTrie* pRhs);
185
193 virtual ~CTrie();
194
208 virtual const CResult Assign(const CTrie& rhs);
209
223 virtual const CResult Assign(const CTrie* pRhs);
224
234 virtual const CResult SetNodeTemplate(const CTrieNode* pTrieNodeTemplate);
235
245 virtual const CTrieNode* GetNodeTemplate() const;
246
260 virtual CTrieNode* Insert(const std::wstring& wstrWord);
261
275 virtual const CResult Remove(const std::wstring& wstrWord);
276
293 virtual CTrieNode* Rename(const std::wstring& wstrOldWord, const std::wstring& wstrNewWord);
294
306 virtual bool FindExact(const std::wstring& wstrWord) const;
307
321 virtual bool FindSubstring(const std::wstring& wstrSubstring, std::vector<std::wstring>& vctResults) const;
322
332 virtual const CResult Clear();
333
345 virtual const CTrieNode* FindExactNode(const std::wstring& wstrWord) const;
346
347 protected:
359 virtual const CTrieNode* FindNode(const std::wstring& wstrKey) const;
360
376 virtual bool RemoveHelper(CTrieNode* pNode, const std::wstring& wstrWord, int32_t i32Depth);
377
389 virtual void CollectWords(const CTrieNode* pNode, std::vector<std::wstring>& vctResults) const;
390
391 protected:
403 virtual wchar_t NormalizeChar(wchar_t ch) const;
404
405 protected:
411
417 };
418 }
419}
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
Implements a Trie structure for efficient string searching.
Definition Trie.h:153
virtual CTrieNode * Rename(const std::wstring &wstrOldWord, const std::wstring &wstrNewWord)
Trie에서 기존 단어를 수정합니다.
CTrie(const CTrie &rhs)
CTrie 클래스의 복사 생성자입니다.
virtual ~CTrie()
CTrie를 해제할 때 호출됩니다.
virtual const CResult Clear()
Trie 의 모든 데이터 초기화.
virtual const CTrieNode * FindNode(const std::wstring &wstrKey) const
Trie에서 특정 문자열이 존재하는지 찾는 함수
virtual const CTrieNode * GetNodeTemplate() const
현재 설정된 노드 템플릿을 반환합니다.
CTrie()
Trie를 초기화합니다.
virtual wchar_t NormalizeChar(wchar_t ch) const
대소문자를 통일하는 함수
virtual bool FindSubstring(const std::wstring &wstrSubstring, std::vector< std::wstring > &vctResults) const
부분 문자열 (중간 포함 단어) 검색
virtual const CResult Assign(const CTrie *pRhs)
포인터를 사용하여 다른 CTrie 객체로부터 속성을 할당합니다.
virtual void CollectWords(const CTrieNode *pNode, std::vector< std::wstring > &vctResults) const
재귀적으로 하위 노드에서 끝나는 모든 단어 수집
CTrie(const CTrie *pRhs)
CTrie 클래스의 포인터 기반 복사 생성자입니다.
virtual bool RemoveHelper(CTrieNode *pNode, const std::wstring &wstrWord, int32_t i32Depth)
Trie에서 단어를 재귀적으로 삭제합니다.
virtual const CResult Remove(const std::wstring &wstrWord)
Trie에서 특정 단어를 삭제합니다.
CTrieNode * m_pRoot
Definition Trie.h:410
CTrieNode * m_pNodeTemplate
Definition Trie.h:416
virtual CTrieNode * Insert(const std::wstring &wstrWord)
CTrie에 단어 삽입
virtual bool FindExact(const std::wstring &wstrWord) const
정확한 단어 검색
virtual const CResult Assign(const CTrie &rhs)
참조를 사용하여 다른 CTrie 객체로부터 속성을 할당합니다.
virtual const CResult SetNodeTemplate(const CTrieNode *pTrieNodeTemplate)
새로운 노드를 생성할 때 사용할 노드 템플릿을 설정합니다.
virtual const CTrieNode * FindExactNode(const std::wstring &wstrWord) const
정확히 단어가 일치하는 노드를 리턴합니다.
Represents a node in the Trie structure.
Definition Trie.h:34
CTrieNode(const CTrieNode &rhs)
CTrieNode 클래스의 복사 생성자입니다.
std::vector< std::wstring > & m_vctWstrWords
Definition Trie.h:139
virtual const CResult Assign(const CTrieNode *pRhs)
포인터를 사용하여 다른 CTrieNode 객체로부터 속성을 할당합니다.
virtual ~CTrieNode()
CTrieNode를 해제할 때 호출됩니다.
CTrieNode()
Default constructor.
virtual const CResult Clear()
CTrieNode 의 모든 데이터 초기화.
CTrieNode(const CTrieNode *pRhs)
CTrieNode 클래스의 포인터 기반 복사 생성자입니다.
bool m_bEndOfWord
Definition Trie.h:133
virtual const CResult Assign(const CTrieNode &rhs)
참조를 사용하여 다른 CTrieNode 객체로부터 속성을 할당합니다.
std::unordered_map< wchar_t, CTrieNode * > & m_mapChildren
Definition Trie.h:127