Mac*_*iek 23
您应该几乎总是为您在程序中使用的每个类包含头文件,否则您依赖于某些头部内部使用您感兴趣的类的事实,但这可能会在另一个编译器或版本上更改.您需要阅读一个类的引用(例如在cppreference.com上 - http://en.cppreference.com/w/cpp/utility/pair)并检查您需要包含哪个头文件 - 如果std::pair
您要添加#include <utility>
.您不能依赖于这样的事实,例如,iostream
已经包含iomanip
并且您的代码在您使用类似的操纵器时编译setw
.您不能 - 您总是应该参考语言规范并包括所需的标题.
jua*_*nza 10
关键是你可能<utility>
通过包含一些其他标题间接包含了标题.通常情况下,标头包含在C++实现中的其他标头中,而标准不强制要求包含标头.因此,通过包含<utility>
,您可以确保您的代码可以跨标准兼容实现移植(至少就此特定问题而言).
标准指定std::pair
了<utility>
,所以每当你使用时都要包括它std::pair
.
您始终需要包含定义所用组件的标头.一些标准库将被实现为包含它们在内部使用的其他声明,但你完全不能依赖它.我认为标准库使声明可用是一个错误,它们不需要提供.
类模板std::pair
可用<utility>
.