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 回答