1

私はLemon Graph Libraryを使用しており、アイテムをコピーしたり割り当てたりせずにレモン マップに追加したいと考えています。コードは次のとおりです。

#include <iostream>
#include <lemon/list_graph.h>
#include <lemon/maps.h>

using namespace lemon;
using namespace std;

typedef lemon::ListDigraph             LGraph;
typedef lemon::ListDigraph::Arc        LArc;
typedef lemon::ListDigraph::Node       LNode;

class MyNode {
public:
    CrossRefMap<LGraph, LArc, std::string> inputs;

    MyNode(const LGraph& graph) : inputs(graph) { }
};


int main(){
    LGraph graph;
    LGraph::NodeMap<MyNode> nodes(graph);

    LNode n = graph.addNode();
    nodes[n] = MyNode(graph); // error: object of type 'MyNode' cannot be assigned because its copy assignment operator is implicitly deleted

    return 0;
}

ここでの主な問題は、コンストラクターでの初期化が必要であり、コピー コンストラクターまたは代入演算子を持たない CrossRefMap です。代わりにこの構造体へのポインターを使用できますが、この解決策では満足できません。どうすればこの問題を解決できますか? 任意の提案をいただければ幸いです。;)

4

1 に答える 1

1

私が知る限り、標準のlemonマップでそれを行う可能性はないので、std::map. グラフの変化を追跡し、レモン グラフ オブザーバーを使用してマップを更新できます。

于 2013-07-24T08:10:35.477 に答える