collection2  v0.6.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
collection2::Tree< Element, Size > Class Template Reference

ツリー More...

#include <tree.hpp>

Public Member Functions

 Tree (TreeNode< Element, Size > *const data, const Size &dataSize)
 内部データを扱う領域とそのサイズを指定してリストを初期化 More...
 
 Tree (const Tree &)=delete
 
Treeoperator= (const Tree &)=delete
 
void initializeTreeNodePool ()
 ツリーノードプールを初期化する More...
 
TreeNode< Element, Size > * retainNode () const
 内部ノードプールから空きノードを探し、確保する More...
 
TreeNode< Element, Size > * retainNode (const Element &element) const
 内部ノードプールから空きノードを探し、値を割り当てる More...
 
OperationResult appendChild (TreeNode< Element, Size > *parent, const Element &target, const TreeNodeSide side, TreeNode< Element, Size > **addedNodePtr=nullptr)
 子ノードを生成し、既存ノードに追加する More...
 
OperationResult linkNode (TreeNode< Element, Size > &parent, TreeNode< Element, Size > *node, const TreeNodeSide side) const
 ノードを別のノードに接続する More...
 
void removeChild (TreeNode< Element, Size > *target)
 子ノードを削除する More...
 
Size capacity () const
 ツリーが持てるノードおよびリーフの全体長を返す More...
 

Detailed Description

template<typename Element, typename Size = size_t>
class collection2::Tree< Element, Size >

ツリー

Template Parameters
Element要素の型
Size要素数の型

Constructor & Destructor Documentation

◆ Tree()

template<typename Element , typename Size >
collection2::Tree< Element, Size >::Tree ( TreeNode< Element, Size > *const  data,
const Size &  dataSize 
)

内部データを扱う領域とそのサイズを指定してリストを初期化

Parameters
data内部データ保管用領域
dataSize領域サイズ

Member Function Documentation

◆ initializeTreeNodePool()

template<typename Element , typename Size >
void collection2::Tree< Element, Size >::initializeTreeNodePool
inline

ツリーノードプールを初期化する

Note
既存のツリーは全て削除されます。

◆ retainNode() [1/2]

template<typename Element , typename Size >
TreeNode< Element, Size > * collection2::Tree< Element, Size >::retainNode
inline

内部ノードプールから空きノードを探し、確保する

Returns
TreeNode<Element, Size>* 確保できたノードのポインタ
Note
空きノードがない場合はnullptrが返ります。

◆ retainNode() [2/2]

template<typename Element , typename Size >
TreeNode< Element, Size > * collection2::Tree< Element, Size >::retainNode ( const Element &  element) const
inline

内部ノードプールから空きノードを探し、値を割り当てる

Returns
TreeNode<Element, Size>* 確保できたノードのポインタ
Note
空きノードがない場合はnullptrが返ります。

◆ appendChild()

template<typename Element , typename Size >
OperationResult collection2::Tree< Element, Size >::appendChild ( TreeNode< Element, Size > *  parent,
const Element &  target,
const TreeNodeSide  side,
TreeNode< Element, Size > **  addedNodePtr = nullptr 
)
inline

子ノードを生成し、既存ノードに追加する

Parameters
parent追加対象の親ノード
target追加する要素
side親ノードのどちらに追加するか
addedNodePtr追加した子ノードへのポインタ
Returns
OperationResult 操作結果
Note
すでに子ノードを持っているか内部データ管理領域がいっぱいの場合、この関数は何もせずに戻ります。

◆ linkNode()

template<typename Element , typename Size >
OperationResult collection2::Tree< Element, Size >::linkNode ( TreeNode< Element, Size > &  parent,
TreeNode< Element, Size > *  node,
const TreeNodeSide  side 
) const
inline

ノードを別のノードに接続する

Parameters
parent接続元のノード
node接続先のノード
side接続する位置

◆ removeChild()

template<typename Element , typename Size >
void collection2::Tree< Element, Size >::removeChild ( TreeNode< Element, Size > *  target)
inline

子ノードを削除する

Parameters
target削除対象のノード
Note
ノードがリーフでない場合、子は再帰的に削除されます。

◆ capacity()

template<typename Element , typename Size = size_t>
Size collection2::Tree< Element, Size >::capacity ( ) const
inline

ツリーが持てるノードおよびリーフの全体長を返す

Returns
Size

The documentation for this class was generated from the following file: