将元素插入柠檬图库图中而不进行复制

时间:2013-06-05 09:47:42

标签: c++ c++11 graph map lemon-graph-library

我正在使用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需要在构造函数中进行初始化,并且没有复制consturctor或赋值运算符。我可以使用指向这个结构的指针,但这个解决方案并不能让我满意。我怎么解决这个问题?任何建议将不胜感激。 ;)

1 个答案:

答案 0 :(得分:1)

据我所知,标准lemon地图无法实现,因此我根据std::map实施了自己的地图。我可以跟踪图表中的变化并使用柠檬图观察者更新我的地图。