2016-09-29 84 views
-2

我在想STL是一个标准的实现,虽然TR1可能不是。但平台很重要吗?我认为它可以在Windows/Linux/Unix/Mac上运行。我有人说它不适用于Windows以外的任何其他应用程序。C++ STL或TR1(不是boost :: tr1)只能在Windows上工作吗?

请让我知道。

-TIA

+5

Peoble告诉你废话,或者你没有正确地说出他们的意思。 –

+0

从1994年到2005年,STL和TR1都是library * specifications *。它们不是实现。任何人都可以在任何平台上实现他们喜欢的任我们为什么要谈论这些古老的,死亡的东西呢? C++标准库包含STL和TR1的许多有用方面,实际可用的实现随同所有当代C++编译器一起提供。 –

回答

1

没有,STL是由亚历山大斯捷潘诺夫惠普和Silicon Graphics公司工作时开发(不与C++标准库混淆)。很多STL后来被包含在C++标准库中,因此有时候STL和C++标准库中的模板化容器会混淆。

第二个STL实现(SGI)被设计为可以与任何标准的complient C++编译器一起工作,但由于缺少所需的功能,IIRC不是早期的Microsoft C++编译器。 (我似乎记得在90年代后期尝试使用它)。 C++标准库现在需要一些compiler intrinsics,所以没有“标准实现”的可能。 (IIRC这些是用于原子操作,但编辑或评论,如果你知道更好)

因此,与Visual Studio一起提供的C++标准库的实现只适用于'Windows'*,并且可能只与微软的C++编译器。其他实现将与其他编译器和其他平台一起使用。 * Visual studio C++可以交叉编译为其他Windows版本,因此Windows 10 x64标准库的版本在嵌入Windows 7 ARM上不起作用。

+0

你可以举一个例子来说明需要编译器使用内置函数的STL用法吗?我确定有,我不能拿出一个。 – user3104201

+0

@ user3104201除上述之外,没有。 –

+0

您可以使用互斥锁(非常低效地)实现原子操作。 std :: is_pod无法在没有编译器支持的情况下准确实现(可以安全地假设没有类型是POD,但它又是低效的)。 –

相关问题