![](/img/trans.png)
[英]Is it guaranteed that C++ standard library containers call the replaceable new functions?
[英]Is the C++ Standard Library replaceable?
C ++标准库是否与编译器绑定,或者可以提供不同的实现?
我很想知道这一点主要是因为似乎typeid
关键字和std::type_info
之间的关系阻碍了这一点。 typeid
关键字取决于std::type_info
的存在,我认为它是错误方向的依赖关系。 我不知道自定义实现应该如何实现type_info::name()
方法。
我的问题是:
std::type_info
是的,有各种各样的'STL':
编辑:
由于这显然与C ++标准库有关 ,因此也有一些替代方案:
库的大部分独立于编译器,如容器和算法。
其他部分非常依赖于特定的编译器,就像你找到的那样type_info
,其中库代替编译器所做的而不是规定它。
其他类似的例子可能是bad_exception,std :: size_t和C ++ 11等特性,如type_traits,atomics和std :: initializer_list,它们都需要编译器的支持。 库必须与特定编译器实际执行的操作紧密匹配。
可以编写一个可以与多个编译器一起工作的库,但不能在没有为每个特定编译器调整一些低级代码的情况下编写。 其他地方提到的图书馆确实如此。
它是可替换的。 看看stl端口
是的,即使不同的编译器具有默认的STL实现,STL也不与编译器捆绑在一起。 您通常可以通过更改某些项目设置来更改STL实现。
例如,在vS2008中,您可以这样做
工具 - >选项 - >项目和解决方案 - > VC ++ Directoires - >包括fiels,添加不同的实现(例如STL PORT),然后将此行移到顶部(在默认实现之上),然后就可以了。
另一个替代STL的例子,牺牲了一些符合标准的速度:EASTL(电子艺界) https://github.com/paulhodge/EASTL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.