バイナリ検索ツリーのSTLのようなコンテナを書いています。私はTree自体と入れ子になったクラスTreeNodeのためのテンプレートクラスを持っています。
私の質問は、ツリークラスまたはNodeクラスにキーをコンパイルするバイナリ述語関数をどこに置くべきかです。私がTreeクラスに入れることにした場合、私のノードのすべてがキーの比較方法を知らないでしょう:(
そして、Nodeクラスであれば、この関数を静的にするかどうかを指定しますか?BSTの実装に少し問題があります
1
A
答えて
1
したがって、あなたは提案された場所のいずれかでコンパレータを必要としません。コンパイラクラスをtreee(およびノード)のテンプレート化されたパラメータとして取得するか、
1
これを静的にすることはできません - もしそうした場合、2つの異なる比較関数を持つ2つの異なるツリーは機能しません後でグローバルに上書きされます)。
これは、ノードごとに行うべきではないことも明らかです.1つのツリー内のすべてのノードが同じ比較機能を持つため、全く同じ機能を複製することになります。
したがって、コンテナの一部にすることをお勧めします。ノードが自分自身を比較することができないというあなたの異論に関しては、それはなぜ重要なのでしょうか? 2つのノードを比較する唯一の時間はコンテナの操作のコンテキストにあります。その場合は、comparerオブジェクトを手軽に使用できます。
関連する問題
- 1. Javaバイナリ検索ツリーの実装に問題があります。
- 2. このrwLock実装に何か問題がありますか?
- 3. multilinqual umbraco 3.0の実装に問題があります
- 4. Merge Sort for Javaの実装に問題があります
- 5. jqueryページングコードに少し問題があります
- 6. データバインドに少し問題があります。UWP(C#)
- 7. ダウンロードコードリダイマの実装に問題がある
- 8. ハッシュテーブル&BST実装
- 9. タブの実装 - 私のアプローチに問題はありますか?
- 10. 私はPowerShellで少し問題があります
- 11. C++ 'C String'実装にメモリ割り当ての問題があります
- 12. ポインタで少し問題がある
- 13. Javaで少し問題がある
- 14. 複合パターンを実装する際の置換に問題があります
- 15. PHP:オブジェクトへの参照でリンクリストの実装に問題がありますか?
- 16. 私のヘッダーファイルとC++の実装ファイルに問題があります
- 17. BSTから削除するのに問題がある
- 18. _str_()メソッドの実装に問題があり、それをcmdで実行する
- 19. Rails BSTタイムゾーンの実装
- 20. STL内のBST実装
- 21. C#:私はインターフェイスオブジェクトを実装するには問題があります
- 22. UISearchControllerでupdateSearchResultsForSearchControllerを実装する際に問題がありますか?
- 23. Viewサブクラスでリスナーを実装する際に問題がありますか?
- 24. 年金プログラムの問題:あまりにも少ない引数
- 25. このインターフェイスを呼び出す実装に問題がある
- 26. C++でリンクリストを実装するのに問題がある
- 27. Cの宿題と少し問題が
- 28. Xcodeでターゲットごとに複数の実装を実装しても問題ありませんか?
- 29. 角度4のサイドバーの実装に問題はありますか?
- 30. 問題の特性に問題がありましたあまり