У меня есть простой код, в котором определены четыре переменные Node
-типа и две Edge
-типа, и создана неупорядоченная карта для сопоставления начальных ребер с их конечными ребрами. Однако Visual Studio 2015 Professional жалуется на следующую проблему:
The C++ Standard doesn't provide a hash for this type.
Не могли бы вы помочь мне, как решить эту проблему? Мой маленький код (который является MWE, поэтому первоначальная цель была отлична от введения такой глупой карты):
#include<string>
#include<vector>
#include<unordered_map>
#include<iostream>
using namespace std;
class Node
{
public:
Node(){};
string label;
};
class Edge
{
public:
Edge(){};
Node *start, *end;
};
int main()
{
Edge* edge;
Node* node;
vector<Node*> nodes;
vector<Edge*> edges;
unordered_map<Node*,Edge*> n2e;
edge = new Edge();
edges.push_back(edge);
node = new Node();
node->label = "A";
edge->start = node;
nodes.push_back(node);
node = new Node();
node->label = "B";
edge->end = node;
nodes.push_back(node);
edge = new Edge();
edges.push_back(edge);
node = new Node();
node->label = "C";
edge->start = node;
nodes.push_back(node);
node = new Node();
node->label = "D";
edge->end = node;
nodes.push_back(node);
n2e[nodes[0]] = edges[0];
n2e[nodes[2]] = edges[1];
cout << n2e[nodes[0]]->start->label << " " << n2e[nodes[0]]->end->label << endl;
cout << n2e[nodes[2]]->start->label << " " << n2e[nodes[2]]->end->label << endl;
return 0;
}