2

これが私の Node クラスの簡略化されたバージョンです:

class Node {
public:
    Node();

    // indicators of whether the node is a top or bottom node
    bool Top;
    bool Bot;

    // pointers for tree structure
    Node *Parent;
    Node *LeftC;
    Node *RightC;

    std::list<Node*> getNodesList();
};

私が望むのは、特定の順序でツリー内のノードへのポインターのリストを取得できることです。これを行うために次のコードを試しました:

std::list<Node*> Node::getNodesList(){
    if (Bot) return (std::list<Node*>(1,this));
    else {
        std::list<Node*> temp (1,this);
        temp.splice(temp.end(), LeftC->getNodesVector()); // Combine with left childrens
        temp.splice(temp.end(), RightC->getNodesVector()); // Combine with right childrens
        return temp;
    }
}

スプライス機能が機能せず、エラーが発生します。

だから私の質問は:

  • リストを結合する splice 関数が機能しないのはなぜですか?
  • ノードへのポインターのリストを返すより効率的な方法はありますか?
4

1 に答える 1

1

あなたの正確なエラーがわからないので、コードをざっと見ただけで、クラスで定義されていないため、Nodeクラスはおそらく何が何であるかを知らないことがわかります。getNodesVector()

于 2013-07-25T17:49:05.697 に答える