1

テンプレート化されたトライ構造を作成しようとしています。これは、この特定のノードが端末であり、子のベクトルであることを示すNodeを含む内部プライベート struct のツリーを表します。TElembool

template<typename TElem>
class Trie
{
    // ...
private:
    struct Node
    {
        TElem elem;
        bool isTerminal;
        std::vector<std::shared_ptr<Node>> children;
    };

    Node root_;
};

ここで、別の基になるコンテナーを選択できるようにする別のテンプレート パラメーターを作成したいと思いますlist。どうすればそれができますか?

4

1 に答える 1

2

テンプレートテンプレートパラメータを使用する場合(テストされていないコードですが、一般的な考え方は問題ありません):

template <typename TElem, 
          template <typename, typename> class Cont
          template <typename> class Allocator=std::allocator>
class Trie {
 private:
    struct Node
    {
        typedef std::shared_ptr<Node> NodePtr_;
        TElem elem;
        bool isTerminal;
        Cont<NodePtr_, Allocator<NodePtr_>> children;
    };

    Node root_;
};

それから

Trie<int, std::list> myTrie = ....;
于 2012-08-03T11:01:42.770 に答える