c++ - STL 库在不同平台上是否不同?

标签 c++ stl

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

我们知道编译器因平台而异,C 运行时库也因平台而异。按照这个标准,标准模板库 (STL) 是否真的会因平台而异?

请澄清这个疑问。

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

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

最佳答案

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

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

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

这就是为什么不依赖 #include 是个好主意的原因s 可通过其他 header 隐式使用,或使用花哨的非标准 #include就像<bits/...> .如果你这样做,那么你就不是在编写可移植的 C++。

关于c++ - STL 库在不同平台上是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57785266/

相关文章:

c++ - 汇总来自多个捐助者的捐款

c++ - 实现可编写脚本的按钮行为

c++ - 有效的 C++ 仍然有效吗?

c++ - 将 new 用于结构 C++ 时出现 Bad_alloc 异常

C++,STL。从 vector<string> 中删除具体值?

c++ - 为什么 std::string 对象的最大大小是 4611686018427387897?

c++ - 如何读带空格的名字?

c++ - vector 和 []-运算符重载

c++ - multimap 智能按键排序

C++ STL vector 保留