std::map<std::pair<std::shared_ptr<MyType>, std::shared_ptr<MyType>>, MyOtherType> oder so ähnlich
-
Die Vergleichsfunktion sieht dann ungefähr so aus:
return std::min(lhs,rhs) < std::max(lhs,rhs);
-
... lol, das war Unfug. Mal brav wieder vergessen.
-
fern schrieb:
... lol, das war Unfug. Mal brav wieder vergessen.
Zeigt aber schon, wohin die Reise geht. Man muss das kleinere Element der linken Seite mit dem kleineren Element der rechten Seite vergleichen und bei Gleichheit mit den beiden groesseren Elemente fortfahren.
"Kleiner" steht hierbei fuer die Ordnungsrelation, egal welche Semantik diese ausdruecken soll.
-
Wenn ich den operator< von std::pair als Grundlage nehme, müsste das so aussehen, denke ich.
return std::min(lhs.first, lhs.second) < std::min(rhs.first, rhs.second) || (!(std::min(rhs.first, rhs.second) < std::min(lhs.first, lhs.second))&& std::max(lhs.first, lhs.second) < std::max(rhs.first, rhs.second);
-
std::map<std::pair<std::shared_ptr<MyType>, std::shared_ptr<MyType>>, MyOtherType>sollte doch gar nicht compilen o.O
immerhin is da ein Bitshift drin
Schreib lieberstd::map<std::pair<std::shared_ptr<MyType>, std::shared_ptr<MyType> >, MyOtherType>
-
Synonym schrieb:
sollte doch gar nicht compilen o.O
immerhin is da ein Bitshift drin

Ich denke, 2014 kann man so langsam C++11 stillschweigend voraussetzen und eher im Gegenteil kenntlich machen, wenn etwas ausdrücklich C++98/TR1 sein soll.
-
SeppJ schrieb:
Synonym schrieb:
sollte doch gar nicht compilen o.O
immerhin is da ein Bitshift drin

Ich denke, 2014 kann man so langsam C++11 stillschweigend voraussetzen und eher im Gegenteil kenntlich machen, wenn etwas ausdrücklich C++98/TR1 sein soll.
Hast natürlich recht... habe nicht gesehen das er std::shared_ptr verwendet hatte... Bin schon zu geschädigt von unserer Software
Ja wir können nur 98/tr1 verwenden
Ja wir würden gerne was neueres nehmenNein es ist uns leider aus diversen Gründen nicht möglich
-
SeppJ schrieb:
C++98/TR1
Hab vorhin nichts gesagt, weil ich weiss, dass du das nicht so gemeint hast, aber jetzt muss ich das tun bevor sich das noch verbreitet:
Der TR1 ist eine Library Extension für C++03, was ein Sprachbugfix für C++98 war. Daher meintest du C++03/TR1 und nicht C++98/TR1 (was schlicht falsch ist).
Nebenbei ist std::tr1::shared_ptr auch in C++03 verfügbar.
-
Das ist ein '/' im Sinne von 'oder'.
-
SeppJ schrieb:
Das ist ein '/' im Sinne von 'oder'.
Was auch seltsam ist, da es beides zwei unterschiedliche Dinge sind. Aber egal, sofern niemand mehr
wir können nur 98/tr1 verwenden
behaupt.
-
korekturr schrieb:
SeppJ schrieb:
Das ist ein '/' im Sinne von 'oder'.
Was auch seltsam ist, da es beides zwei unterschiedliche Dinge sind.
http://de.wikipedia.org/wiki//#Schr.C3.A4gstrich_zur_Kennzeichnung_der_Verbindung
Der Schrägstrich kann zur „Angaben mehrerer (alternativer) Möglichkeiten im Sinne einer Verbindung mit und, oder, bzw., bis oder dergleichen“ verwendet werden,[3] zum Beispiel: Region Leipzig/Halle, das Duo Becker/Stich, im Schuljahr 2014/2015.
[3] § 106 der amtlichen Regelung der deutschen Rechtschreibung
Ist mir rätselhaft, wie dir noch nie diese Bedeutung begegnet sein kann. Das wird doch andauernd so benutzt.
Aber es wird wirklich Offtopic. Jeder weiß, was gemeint ist. Und falls das wirklich noch jemand missverstanden hat, dann hast du es ja nun nochmal ausdrücklich klargestellt.