0
マップの仕組みとグラフの実装方法を学習しようとしています。私は上記のエラーが発生し続けます。私はそれが '<'が想定していないデータよりも少なく取っていると仮定します。C2678バイナリ '<': 'const Node'型の左辺オペランドを取る演算子が見つかりません(または許容される変換はありません)
using namespace std;
struct Node {
string name;
int val;
Node(string n) {
name = n;
val = 0;
}
};
struct AdjList {
map<Node, list<Node*>> adj;
map<Node, list<Node*>>::iterator it;
int type;
AdjList(int a) {
type = a;
}
void add(Node temp) {
it = adj.end();
list <Node*> hi;
adj.insert(pair <Node, list <Node*>>(temp, hi));
}
void connect(Node *a, Node *b) {
adj.find(*a)->second.push_back(b);
if (type == 1) {
adj.find(*b)->second.push_back(a);
}
}
void connect(Node *a, vector <Node*> b) {
for (int i = 0; i < b.size(); i++) {
connect(a, b[i]);
}
}
};
あなたが*必須* 'のstdとして、あなたのクラスを使用するように定義するだけ演算子を:: mapキーは '<'です - 他のものはあなたにとって有益かもしれませんが、 'std :: map'では使われません。 –
@ChrisDodd:Yar。他のすべてのプログラマを実装したのは、他のプログラマが使用するのを難しくしているからです。すべてを実装するのは良い方法ですが、私が言ったように、 'map'は' operator <'を必要としますそれは単に 'operator <'について気にしていた)。他の4つの演算を 'operator =='と 'operator <'の形で定義するのがどれほど簡単かを示す機会は常に取らなければなりません。 :-) – ShadowRanger
私はあなたがどのようにオブジェクトを "ソート"するのかは分かりません。それはオブジェクトのアドレスに基づいてソートされますか?この場合ノードが空の場合と同様に、 "<"演算子はどのように実装されますか? – lyph