46 Stimmen

Was ist std::pair?

Was ist std::pair warum sollte ich es verwenden, und welche Vorteile boost::compressed_pair bringen?

3voto

user17481 Punkte 703

Es handelt sich um eine Standardklasse für die Speicherung eines Wertepaares. Sie wird von einigen Standardfunktionen zurückgegeben/verwendet, wie std::map::insert .

boost::compressed_pair behauptet, effizienter zu sein: siehe hier

3voto

rlerallut Punkte 7067

Zusatzinfo: boost::compressed_pair ist nützlich, wenn einer der Typen des Paares eine leere Struktur ist. Dies wird oft in der Template-Metaprogrammierung verwendet, wenn die Typen des Paares programmatisch von anderen Typen abgeleitet werden. Am Ende hat man dann normalerweise eine Art "leeres struct".

Ich würde std::pair für jede "normale" Verwendung bevorzugen, es sei denn, Sie sind in schwere Vorlage Metaprogrammierung.

3voto

Andrei Taranchenko Punkte 1250

Es ist nichts anderes als eine Struktur mit zwei Variablen unter der Haube.

Ich mag es eigentlich nicht, std::pair für Funktionsrückgaben zu verwenden. Der Leser des Codes müsste wissen, was .first ist und was .second ist.

Der Kompromiss, den ich manchmal verwende, besteht darin, sofort konstante Verweise auf .first und .second zu erstellen, wobei die Verweise eindeutig benannt werden.

3voto

mloskot Punkte 34861

Wozu dient std::pair und warum sollte ich es verwenden?

Es handelt sich um ein einfaches Tupel mit zwei Elementen. Es wurde in der ersten Version von STL in Zeiten, in denen Compiler noch nicht in großem Umfang Schablonen und Metaprogrammierungstechniken unterstützten, die erforderlich wären, um anspruchsvollere Tupeltypen wie Boost.Tupel .

Sie ist in vielen Situationen nützlich. std::pair wird in standardmäßigen assoziativen Containern verwendet. Es kann als eine einfache Form des Bereichs verwendet werden std::pair<iterator, iterator> - so dass man Algorithmen definieren kann, die ein einziges Objekt akzeptieren, das einen Bereich repräsentiert, anstatt zwei separate Iteratoren. (Dies ist in vielen Situationen eine nützliche Alternative.)

1voto

Aaron Punkte 456

Manchmal gibt es zwei Informationen, die man einfach immer zusammen weitergibt, sei es als Parameter oder als Rückgabewert oder was auch immer. Sicher, man könnte ein eigenes Objekt schreiben, aber wenn es sich nur um zwei kleine Primitive oder Ähnliches handelt, ist ein Paar manchmal ganz gut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X