0

私はC++コードを書いています。私が書いたノードでマルチツリーを構築できるはずです。しかし、以下のアドレスでダウンロードしたツリーコンテナを使用してノードを保存しようとしましたが、それらはすべて、複数の値を持つノードを保存できないようです。

http://www.datasoftsolutions.net/tree_container_library/overview.php

http://archive.gamedev.net/archive/reference/programming/features/coretree2/default.html

struct node{    //construct the node
    char *dirname;
    char date[12];
    int loc;
    bool prot;
}

それで、私が書いたノードを格納できるツリーコンテナはありますか? ノードをマルチツリーとして保存する必要があります。

4

1 に答える 1

0

構造体ノードの複数のフィールドと関係があるとは思えません。

ツリーに格納されたデータ型には、いくつかの比較演算子が必要になります。使用しようとしているライブラリに必要なものを特定し、それらをノード タイプに実装する必要があります。ドキュメントをちらりと見てみました。パッケージは C++ で記述され、テンプレートを使用し、STL と互換性があります。そのため、value_type などの特定の typedef も必要になる場合があります...

表示されるエラー メッセージを表示してください。問題を解決できます。少なくとも、おそらく operator< と operator!= または同等のものを実装する必要があります。

更新: ツリーを検索する (またはノードをツリーに配置する) には、少なくとも operator< を定義する必要があります。エラーメッセージはそれを教えてくれます。また、正しく動作させるにはおそらく operator== も必要です。これを試してください(テストされていません):

#include <cstring>

bool operator< (const node& left, const node&right) {
    return 0 > strcmp(left.dirname, right.dirname);
}

bool operator== (const node& left, const node&right) {
    return 0 == strcmp(left.dirname, right.dirname);
}
于 2012-11-28T02:44:22.950 に答える