C++标准库是否可以替换?

Sta*_*ked 18 c++

C++标准库是否与编译器绑定,或者可以提供不同的实现?

我很想知道这一点,主要是因为看起来typeid关键字之间的关系std::type_info阻碍了这一点.该typeid关键字依赖于存在的std::type_info,我会认为是在错误的方向上的依赖.我不知道自定义实现应该如何实现该type_info::name()方法.

我的问题是:

  • 标准库是否可以替换?
  • 如果是,那么如何实施 std::type_info

小智 12

是的,有各种各样的'STL':

  • Stepanov和Lee的原始STL实施.1994年,惠普.不再维护.
  • SGI STL,基于Stepanov&Lee的原始实施.1997年,Silicon Graphics.不再维护.
  • 来自gnu的libstdc ++(是libg ++的一部分)
  • 来自clang的libc ++
  • STLPort,基于SGI STL
  • Rogue Wave标准库(HP,SGI,SunSoft,Siemens-Nixdorf)
  • PJ Plauger的Dinkum STL图书馆

编辑:

由于这显然与C++标准库有关,因此也有一些替代方案:

  • -1因为这是关于标准库的问题,而不是STL.大多数C++标准库在STL之前都有很大的优势. (2认同)

Bo *_*son 11

库的大部分独立于编译器,如容器和算法.

其他部分非常依赖于特定的编译器,就像您所发现的那样 - type_info库在哪里记录编译器所做的事情而不是规定它.

其他类似的例子可能是bad_exception,std :: size_t和C++ 11等特性,如type_traits,atomics和std :: initializer_list,它们都需要编译器的支持.库必须与特定编译器实际执行的操作紧密匹配.

可以编写一个可以与多个编译器一起工作的库,但不能在没有为每个特定编译器调整一些低级代码的情况下编写.其他地方提到的图书馆确实如此.


BЈо*_*вић 8

它是可替换的.看看stl端口