STL 库在不同平台上是否不同?

Does STL library differ on different platforms?

本文关键字:是否 平台 STL      更新时间:2023-10-16

Windows 上的C++标准模板库 (STL(与 Linux 或任何其他平台上的标准模板库 (STL( 是否不同?STL 的标头是否也因平台而异,或者 STL 只是一个标头库及其在 CRT 中的实现?

我们知道编译器因平台而异,C 运行时库也因平台而异。这样说,即使是标准模板库(STL(也因平台而异,这是真的吗?

请澄清这一疑问。

另外,Windows上的C++ STL的名称是什么,Linux上是什么?

我一直试图通过在线阅读各种文章来理解这一点,并试图在我的脑海中构建一个单一的工作流程,以更好地理解这些术语。

C++标准库的规范不依赖于任何特定的平台或编译器,尽管它确实依赖于目标C++标准,并且其行为依赖于平台的各种属性。

但是C++标准库的实现非常依赖于编译器和操作系统。一些C++标准库甚至可以硬编码到编译器中。

但是你以同样的方式使用它。 例如,对于std::coutstd::cin,您应该始终编写#include <iostream>因为这是文档所说的您应该做的。头文件的名称可能因实现而异,但您应该直接使用的头文件的名称永远不会有所不同。

这就是为什么最好不要依赖#include通过其他标头隐式可用,或者通过使用花哨的非标准#include(如<bits/...>(。如果你这样做,那么你就不是在编写便携式C++。

C++是为抽象硬件设计的,但标准C++库实现不同,是的。库供应商必须遵守C++标准规则,但在允许的情况下可以自由提供其实施(标准中定义的实现措辞(。标头也不同。