簡體   English   中英

在c ++ 11中是否有Boost.Bimap替代方案?

[英]Is there a Boost.Bimap alternative in c++11?

在C ++ 0x中有沒有可用的替代Boost的bimap?

我想避免使用Boost,但完全接受C ++ 11。 如果有必要的話,在我的程序中,Boost的bimap的精簡版本對我有用(我需要一個恆定的bimap來在枚舉和相應的字符串之間切換)。 地圖將是編譯時常量,因此即使兩個手動維護的地圖也不是最佳解決方案。

謝謝!

更新:我在代碼項目中找到了這個,但似乎許可可能是一個問題: http//www.codeproject.com/KB/stl/bimap.aspx? fid = 12042&df = 90&mpp = 25&noise = 3&sort = Position&view = Quick& fr = 151#xx0xx

我只是在尋找一個干凈簡單的解決方案(一個標題/源文件或一點額外,因為在我的情況下兩個鏡像地圖同樣好)。

簡答:不。

答案很長:不。


應當指出的是,C ++ 1 4的支持透明比較消除了的時間* Boost.Bimap 90%的需要:當你需要關閉一個對象的任何給定屬性的給密鑰(存儲或計算的),通常無論如何,在對象中固有/存在的簡單,按位可比的唯一標識符。 使用透明比較器,您可以將對象與任何可能的值進行比較,只能按類型進行區分,只要可以從對象獲取/計算所述值而不進行變異即可。

*猜測,而不是統計

我的感覺是Boost庫中的許多工作使它們與其他庫/ STL一起工作。

如果您不需要該功能,則可以使用具有std::map<X*, Y*>std::map<Y*, X*> 然后有如下方法: add(X,Y)remove(X,Y)get_left(X)get_right(Y)

如果要存儲副本, add(X,Y)可以分配內存, remove(X,Y)可以remove(X,Y)分配。 此外,您可以定義一個析構函數,在其余元素上調用remove(X,Y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM