Bei kleinen Strukturen, die nur aus zwei Elementen bestehen, entscheiden sich viele aufgrund der Vor- und Nachteile für Standardpaare. definierte Notwendigkeiten, wie zum Beispiel der strikt-schwache Ordnungsoperator. Allerdings stellt dieser Ansatz aufgrund seiner wenig aussagekräftigen Variablennamen Herausforderungen dar, insbesondere wenn es um mehrere Elemente oder verschachtelte Paare geht.
Eine Alternative ist die Verwendung von Tupeln, entweder von Boost oder C 11. Sie bieten zwar ein saubereres Aussehen, sind aber nicht geeignet beim Vergleich immer noch mit Komplexität verbunden. Auf der Suche nach einer schlankeren Lösung erwägen einige, dies zu umgehen, indem sie sich ausschließlich auf Tupeloperationen verlassen.
Zum Beispiel kann ein strikt-schwacher Ordnungsoperator mit einem Tie geschrieben werden, der aus den bereitgestellten Argumenten ein Tupel von T&A-Referenzen bildet :
bool operator<(MyStruct const& lhs, MyStruct const& rhs){ return std::tie(lhs.one_member, lhs.another, lhs.yet_more) < std::tie(rhs.one_member, rhs.another, rhs.yet_more); }
Dieser elegante Ansatz ermöglicht einfache Vergleichsvorgänge. Es ist jedoch immer noch wichtig, die Nachteile zu berücksichtigen. Ein Problem besteht darin, dass die Betreiber unabhängig oder befreundet sind. In diesem Fall kann eine öffentliche Vererbung erforderlich sein. Dies kann zu Schwachstellen führen, bei denen Funktionen oder Operatoren (insbesondere „operator=“) umgangen werden könnten. Darüber hinaus können Bindungen Mitglieder ausschließen, die für die Bestellung irrelevant sind, was möglicherweise zu Komplikationen führt.
Letztendlich sollte die Entscheidung für diesen Ansatz auf seinen Auswirkungen auf die Leistung basieren. Obwohl dies sicherlich den Bedienercode vereinfacht, bestehen Bedenken, wenn die Profilerstellung auf einen zeitaufwändigen Vergleichsvorgang hinweist. Andernfalls kann die Wartungsfreundlichkeit mögliche Nachteile überwiegen.
Das obige ist der detaillierte Inhalt vonIst die Verwendung von „std::tie' für den Tupelvergleich in C ein sinnvoller Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!