Ich habe eine Struktur node
, mit label
und cost
.
Ich möchte eine node
in eine set
für n
mal einfügen, wobei jeder Knoten die Bezeichnung n
hat.Wie kann ich n Variablen des Typs struct zu einer Menge erstellen und hinzufügen?
Irgendwie, wenn ich es baue und laufe, bekomme ich immer noch nur eine Variable in meinem Set. Was habe ich falsch gemacht?
struct node
{
int label;
int cost;
bool operator < (const node &other) const { return cost < other.cost; }
bool operator == (const node &other) const { return label < other.label; }
};
I'm not sure if that is correct.
(GELÖST) wie meine Schleife sieht aus wie jetzt:
multiset <node> Q; //instead of set <node> Q;
for (i=1;i<=n;i++)
{
node a;
a.label=i;
a.cost=LONG_MAX;
Q.insert(a);
}
Ein 'Set' enthält nur eindeutige Elemente, keine Duplikate. Wie sieht Ihre Vergleichsfunktion ('operator <') für 'node' aus? – 1201ProgramAlarm
Strukturknoten { Int-Label; Int Kosten; bool operator <(const node & andere) const {return cost
meiznub
weiß nicht, ob es die Ursache für Ihren Fehler ist (die tatsächlichen Daten benötigen), aber es ist logisch inkonsistent, Labelfeld für Gleichheit und Kostenfeld für weniger als zu verwenden. –