我习惯使用stl pair编写代码,而无需包含任何特定的头文件来使用pair。但今天朋友告诉我,每当我使用pair时,我应该使用utility头文件,否则在某些编译器上会出现问题。请告诉我这是真的吗?如果我可以不使用它编写代码,那么utility头文件的作用是什么。
std::pair
时,你应该添加#include <utility>
。例如,在使用setw
等操纵符时,不能依赖于iostream
已经包括iomanip
并且你的代码能够编译通过。你不能这样做 - 你总是应该参考语言规范并包含所需的头文件。重点是你可能已经通过包含其他头文件而间接地包含了 <utility>
头文件。通常情况下,在 C++ 实现中,头文件会被其他头文件包含,而这种包含并不是由标准规定的。因此,通过包含 <utility>
,你可以确保你的代码在符合标准的实现中是可移植的(至少在这个特定问题上是如此)。
标准指定 std::pair
在 <utility>
中,所以在使用 std::pair
时应该包含它。
您始终需要包含定义所使用组件的标头。一些标准库将被实现以包含其内部使用的其他声明,但是您不能完全依赖此功能。我认为标准库公开了它们不必公开的声明是错误的。
类模板std::pair
由<utility>
提供。