Windows上的C ++标准模板库(STL)是否不同于Linux或任何其他平台上的?STL的标头是否也随平台而不同,还是STL仅仅是标头库及其在CRT中的实现?
我们知道编译器随平台而异,C运行时库也随平台而异。事实证明,即使标准模板库(STL)与平台也不同吗?
请澄清这个疑问。
另外,在Windows上C ++ STL的名称是什么,在Linux上是什么?
我一直试图通过在线阅读各种文章并试图构想一个工作流程来更好地理解术语来理解这一点。
尽管C ++标准库的规范确实取决于目标C ++ 标准,但其规范并不取决于任何特定平台或编译器,并且其行为取决于平台的各种属性。
但是C ++标准库的实现极其依赖于编译器和操作系统。一些C ++标准库甚至可以硬编码到编译器中。
但是您以相同的方式使用它。例如std::cout,std::cin您应该始终编写#include <iostream>文档,因为那是文档所说的。头文件的名称在不同的实现之间可能有所不同,但是您应该直接使用的头文件的名称永远不会不同。
这就是为什么最好不要依赖#include通过其他标头隐式可用的s,或者不使用#include像这样的花哨的非标准s的原因<bits/...>。如果这样做,则说明您不是在编写可移植的C ++。
C ++是为抽象硬件而设计的,但是标准C ++库的实现有所不同,是的。图书馆供应商必须遵循C ++标准规则,但可以在允许的情况下自由提供其实现(该实现在标准中定义了措辞)。标头也不同。