Bei der Konstruktion leichter Strukturen, die nur zwei Elemente enthalten, entscheiden sich viele Entwickler aufgrund der integrierten Unterstützung für std::pair für Schlüsseloperationen wie Operator< für streng schwache Ordnung. Allerdings weist dieser Ansatz Nachteile in Form einer nicht hilfreichen Variablenbenennung auf, die zu Verwirrung führen kann. Das Verschachteln von Paaren wird bei mehr als zwei Mitgliedern weniger wünschenswert.
Eine alternative Lösung besteht in der Verwendung von Tupeln aus Boost oder C 11. Tupel bieten zwar eine verbesserte Struktur und Klarheit im Vergleich zu std::pair, ihre Verwendung kann jedoch dennoch umständlich sein . Um dieses Problem zu beheben, können Entwickler stattdessen die Verwendung von Tie-basierten Operationen in Betracht ziehen.
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); }
In diesem Fall erstellt Tie ein Tupel von Referenzen aus den übergebenen Argumenten. Zu den Vorteilen dieses Ansatzes gehören:
Beim privaten Erben Alternativ kann ein Tupel vorgeschlagen werden, der mehrere aufweist Nachteile:
Insgesamt stellt die Implementierung von Vergleichsoperatoren über Tupel und Tie eine dar praktikable Option für eine vereinfachte und korrekte Implementierung durch den Bediener. Allerdings sollten Auswirkungen auf die Leistung berücksichtigt und behoben werden, wenn die Profilerstellung ergibt, dass der Vergleichsvorgang einen Engpass bei der Ausführung der Anwendung darstellt.
Das obige ist der detaillierte Inhalt vonWie können Tupel und „std::tie' die Implementierung von Vergleichsoperatoren in C vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!