Fichier d'en-tête pour la paire stl
Je suis habitué à l'écriture de codes à l'aide d'stl paire de sans aucun spécifiques fichier d'en-tête pour l'utilisation de la paire. Mais un ami, aujourd'hui m'a dit que je devrais utiliser utilitaire en-tête à chaque fois que j'utilise la paire reste je vais avoir des problèmes sur certains compilateurs. S'il vous plaît dites si c'est vrai. Et qu'est-ce que l'utilisation de l'utilitaire d'en-tête si je peux écrire des codes sans l'utiliser.
OriginalL'auteur user1543957 | 2012-11-25
Vous devez vous connecter pour publier un commentaire.
Vous devriez presque toujours inclure le fichier d'en-tête pour chaque classe que vous utilisez dans votre programme, sinon vous comptez sur le fait que certains en-têtes utiliser à l'interne une classe de votre intérêt, mais cela peut changer sur un autre compilateur ou la version. Vous avez besoin de lire de référence d'une classe (par exemple sur cppreference.com - http://en.cppreference.com/w/cpp/utility/pair ), et vérifiez le fichier d'en-tête, vous devez inclure - en cas de
std::pair
vous devez ajouter#include <utility>
. Vous ne peut pas compter sur le fait, que, par exemple,iostream
comprend déjàiomanip
et votre code compile lorsque vous utilisez des manipulateurs commesetw
etc. Vous ne pouvez pas - vous devez toujours vous référer à la langue spécifications et inclure les en-têtes.OriginalL'auteur Maciek
Le point est que vous avez peut-être indirectement inclus le
<utility>
en-tête, grâce à l'inclusion de certains autres d'en-tête. Il est généralement le cas que les en-têtes sont inclus par d'autres en-têtes dans une implémentation C++ sans que l'inclusion, imposé par la norme. Ainsi, en incluant<utility>
, vous assurez-vous que votre code est portable sur les implémentations conformes à la norme (au moins à l'égard de cette question).La norme précise que
std::pair
est dans<utility>
, de sorte que vous devrait comprendre cela à chaque fois que vous utilisez unstd::pair
.OriginalL'auteur juanchopanza
Vous devez toujours inclure les en-têtes de définir les composants que vous utilisez. Certaines bibliothèques standard sera mis en œuvre afin d'inclure d'autres déclarations qu'ils utilisent en interne butyou ne pouvez pas compter sur ce, à tous. Je considère que c'est une erreur que les bibliothèques standard de faire des déclarations disponibles, ils ne sont pas tenus de mettre à la disposition.
Le modèle de classe
std::pair
est mis à disposition par<utility>
.OriginalL'auteur Dietmar Kühl