STL 库在不同平台上是否不同?
Does STL library differ on different platforms?
Windows 上的C++标准模板库 (STL(与 Linux 或任何其他平台上的标准模板库 (STL( 是否不同?STL 的标头是否也因平台而异,或者 STL 只是一个标头库及其在 CRT 中的实现?
我们知道编译器因平台而异,C 运行时库也因平台而异。这样说,即使是标准模板库(STL(也因平台而异,这是真的吗?
请澄清这一疑问。
另外,Windows上的C++ STL的名称是什么,Linux上是什么?
我一直试图通过在线阅读各种文章来理解这一点,并试图在我的脑海中构建一个单一的工作流程,以更好地理解这些术语。
C++标准库的规范不依赖于任何特定的平台或编译器,尽管它确实依赖于目标C++标准,并且其行为依赖于平台的各种属性。
但是C++标准库的实现非常依赖于编译器和操作系统。一些C++标准库甚至可以硬编码到编译器中。
但是你以同样的方式使用它。 例如,对于std::cout
和std::cin
,您应该始终编写#include <iostream>
因为这是文档所说的您应该做的。头文件的名称可能因实现而异,但您应该直接使用的头文件的名称永远不会有所不同。
这就是为什么最好不要依赖#include
通过其他标头隐式可用,或者通过使用花哨的非标准#include
(如<bits/...>
(。如果你这样做,那么你就不是在编写便携式C++。
C++是为抽象硬件设计的,但标准C++库实现不同,是的。库供应商必须遵守C++标准规则,但在允许的情况下可以自由提供其实施(标准中定义的实现措辞(。标头也不同。
相关文章:
- 如何判断类型双关语在我的平台上是否可以?
- 是否有任何 2 补充平台/编译器,其中有符号移位不做通常的事情?
- 是否有缺少固定宽度类型(intXX_t)的平台
- 不同平台的 fstream 系列实现是否不同?
- STL 库在不同平台上是否不同?
- 从浮点型到 int 的转换在所有平台和处理器架构中是否一致?
- C++ WinRT - XAudio2是否支持Xbox One平台
- 如果给定正确的运行时库,x86 可执行文件是否可以在任何 x86 平台上运行
- "std::this_thread::sleep_for()"是否有特定于平台的限制
- 在x86_64平台上是否需要 rdtsc 的 mfence?
- 在 MSVC 中将某些库的目标平台版本设置为 10.x 是否使程序与在 Windows Vista/7/8 上运行不兼容
- C/C 中POW()函数的实现是否随平台或编译器而变化
- 在目标平台上编译 Boost 自己是否有意义
- VS2010在不同平台上生成的可执行文件是否应该有所不同
- 假设所有Windows平台都在UCS-2 LE中是否安全
- 尚未操作的 32 位规范化浮点数在任何平台/编译器上是否相同?
- 是否可以在所有平台上使用vs2010 c++和Qt
- 是否有一个平台不将 std::time_t 表示为 unix 时间
- pclose() 返回管道的终止状态是否在所有平台上都向左移动了 8 位?
- 是否可以创建一个可以在ios移动平台和windows桌面平台之间运行的应用程序,而无需使用web界面