为什么C++标准将容器类拆分成多个头文件?

Arc*_*Bug 1 c++ standards containers stl

我学习 C++ 一段时间了,对它的容器用法感到困惑。如果我想使用某个容器,我必须手动将它们一一包含在内。例如,如果我想使用“向量”容器,我必须输入#include "vector",如果我稍后需要“列表”容器,我必须添加#include "list"

为什么 C++ 标准不简单地将每个容器类放在一个头文件中(例如 )#include "container",这样开发人员就不用关心将它们一一包含了?

Nat*_*ica 6

为什么 C++ 标准不简单地将每个容器类放在一个头文件中(例如 )#include "container",这样开发人员就不用关心将它们一一包含了?

性能,特别是编译时性能。如果包含所有内容,编译器将不得不处理大量代码。如果你只使用了所有内容的 1%,那么编译器正在处理的 99% 的代码对你来说都是无用的,只是浪费你的时间让编译器处理它。

  • @ArchBug 因为定义“向量”涉及的代码比定义“排序”涉及的代码多得多。目的是在过多的标头和过多不必要的包含代码之间取得平衡。 (2认同)
  • @ArchBug 虽然性能是一个大问题,但便利性也发挥了作用。必须单独包含每个功能将过于繁重。许多算法也相互依赖,因此将它们放在一起是有意义的。有了容器,它们就不会相互依赖,而且数量也不会那么多,所以最好将它们分开。您也会在标准的实用程序部分看到这一点。其中有很多子组被分成自己的头文件,因为它们不依赖于其他子组。 (2认同)