Kein Thema löste mein Problem des Vergleichens von Strukturen als Schlüsselzuordnung in C++.So lösen Sie das Vergleichen von Strukturen als Schlüsselzuordnung C++
Structs folgenden Code:
struct XYZ{
int x, y, z;
}
struct XYZComp{
bool operator()(const XYZ& l, const XYZ& r)
{
return ((l.x==r.x)&&(l.y==r.y)&&(l.z==r.z));
}
}
Haupt sieht aus wie
int main()
{
map<XYZ, int, XYZComp> m;
m.insert(std::make_pair<XYZ,int>({1,2,3}, 1)); //ok
map<XYZ, int, XYZComp>::iterator it = m.find({1,0,3});
if(it!=m.end())
{
std::cout<<"Key exists in map";
}
else
{
m.insert(std::make_pair<XYZ,int>({1,0,3}, 1));
//never come here
//compiler thinks key already exists in map
}
return 0;
}
ich ohne XYZComparer nur versucht, aber es funktioniert immer noch nicht.
Wie zu lösen, diese Strukturen XYZ zu vergleichen, während ich das vorhandene Element in der Karte versuche.
Edit: Compiler denkt, Strukturen sind die gleichen, wenn mindestens eine Zahl korrekt ist.
nicht hilfreich. Ich könnte es so lassen und lassen Sie heraus, warum (was genauso hilfreich ist) oder ich könnte erklären, warum es nicht hilfreich ist, Ihnen die Zeit und Mühe zu sparen, es zu suchen ... Ja - wenn es nicht funktioniert, Sagen Sie, was Sie bekommen und was Sie erwartet haben, damit die Leute nicht selbst versuchen müssen, es selbst auszuarbeiten! – UKMonkey