我正在嘗試爲C++中的枚舉創建一個簡單的雙向查找工具。我有一個辦法查找工作正常...boost :: bimap for enum
enum MyEnum
{
One,
Two,
Three
};
const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
(One, "One")
(Two, "Two")
(Three, "Three");
,然後通過
MyEnumMap.at(One)
這工作做了一下,但只允許基於鍵查找。我想使用雙向查找容器,如boost:bimap,以便根據值和密鑰輕鬆進行反向查找。它似乎並不像map_list_of與boost :: bimap兼容。
首先,我還應該使用map_list_of和boost :: bimap,還是需要另一種類型?
這些映射將全部是基本(枚舉,字符串)類型。
其次,有沒有辦法像上面那樣以簡單的方式將地圖定義爲常量?我試圖儘可能容易地進行更新和維護,而不必進入太多額外的typedef等。感謝您的見解。
如果您只是想將枚舉數映射到字符串,您可以利用boost_enum(來自boost vault)。看看這個線程:http://stackoverflow.com/questions/217549/which-typesafe-enum-in-c-are-you-using –