![](/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.