Вставьте элемент в карту библиотеки графа лимонов без копирования

я использую Библиотека графов лимонов и я хочу добавить элемент на лимонную карту, не копируя его и не назначая. Вот код:

#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, который нуждается в инициализации в конструкторе и не имеет константора копирования или оператора присваивания. Я мог бы вместо этого использовать указатель на эту структуру, но это решение меня не удовлетворяет. Как я могу решить эту проблему? Любые предложения будут оценены. 😉

1

Решение

Насколько я знаю нет возможности сделать это со стандартным lemon карты, поэтому я реализовал свой собственный на основе std::map, Я могу отслеживать изменения на графике и обновлять свою карту с помощью наблюдателей на графике лимона.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]