对 stl 的头文件

Header file for pair stl

本文关键字:文件 stl      更新时间:2023-10-16

我习惯于使用 stl 对编写代码,而不包含任何用于使用 pair 的特定头文件。但是今天一个朋友告诉我,每当我使用pair时,我都应该使用实用程序标头,否则我在某些编译器上会遇到问题。请告诉这是否属实。如果我可以在不使用它的情况下编写代码,实用程序标头有什么用。

你几乎应该总是包含你在程序中使用的每个类的头文件,否则你依赖于一些头文件在内部使用你感兴趣的类,但这可以在另一个编译器或版本上改变。您需要读取类的引用(例如在 cppreference.com - http://en.cppreference.com/w/cpp/utility/pair 上)并检查您需要包含哪个头文件 - 如果是std::pair,您应该添加#include <utility>。你不能依赖于这样一个事实,例如,当你使用setw等操纵器时,iostream已经包含了iomanip和你的代码编译。您不能 - 您始终应参考语言规范并包含所需的标头。

关键是您可能通过包含其他标头间接包含<utility>标头。通常情况下,标头包含在C++实现中的其他标头中,而标准没有强制要求该包含。因此,通过包含 <utility> ,您可以确保您的代码在符合标准的实现中可移植(至少对于此特定问题而言)。

该标准规定std::pair<utility>,因此每当使用std::pair时都应包含此内容。

您始终需要包含定义所用组件的标头。一些标准库将被实现以包含它们内部使用的其他声明,但您根本不能依赖它。我认为标准库提供声明是一个错误,它们不需要提供。

类模板std::pair<utility> 提供