127 votes

Différence entre std::pair et std::tuple avec seulement deux membres ?

Y a-t-il une différence entre un std::pair et un std::tuple avec seulement deux membres ? (Outre l'évidence que std::pair nécessite deux et seulement deux membres et tuple peut avoir plus ou moins...)

49voto

Arafangion Points 5650

Le nom d'un std::tuple est plus long (un caractère supplémentaire). Un plus grand nombre de ces caractères sont tapés avec la main droite, donc plus faciles à taper pour la plupart des gens.

Cela dit, std::pair ne peut avoir que deux valeurs - pas zéro, un, trois ou plus. DEUX valeurs. Un tuple, cependant, n'a presque aucune limitation sémantique sur le nombre de valeurs. Un std::pair , par conséquent, est un type de type sécurisé plus précis à utiliser si vous souhaitez réellement spécifier une paire de valeurs.

27voto

bhardwajs Points 171

Notez qu'avec C++ 17, on peut utiliser la même interface pour lire les données de la paire et du tuple avec deux éléments.

 auto [a, b] = FunctionToReturnPairOrTuple();

Pas besoin d'utiliser get<> :)

2voto

tgoodhart Points 1206

Pour ce que ça vaut, je trouve que la sortie GDB de std::tuple est beaucoup plus difficile à lire. Évidemment, si vous avez besoin de plus de 2 valeurs, std::pair ne fonctionnera pas, mais je considère cela comme un point en faveur des structs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X