我想寫一個使用boost:variant作爲值的通用映射。 我一直在試圖編寫將返回適當類型的get(std :: string key)函數。增強變體:我如何做一個返回設置類型的訪問者?
這裏是我想出迄今:
class GenericHashMap {
private:
std::map< std::string, boost::variant<int, bool, double, std::string> > genericMap;
public:
template<typename T>
bool getValue(const std::string & key, T & value) {
if (_map.find(key) == _map.end()) {
return false;
}
T * valuePtr = boost::get<T>(_map[key]);
if (valuePtr == NULL) {
return false;
}
value = *valuePtr;
return true;
}
}
我很好奇,我應該如何處理迭代器?值得讓我自己的嵌套迭代器或只是返回嵌套的std :: map。
編輯
我加入了一流的設計,我希望能實現(即一個通用的HashMap)。我遇到的問題是我想要一種方式讓用戶查詢是否將特定鍵存儲爲特定類型。
訪問者可以返回NULL,如果它是錯誤的類型! – Setheron 2013-02-21 00:29:54
'boost :: get'不是訪問者。 – 2013-02-21 00:42:25
你想做什麼,只是一個'boost :: variant'的地圖還沒有做? – 2013-02-21 00:42:34