我正在尝试编写一个使用 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。
编辑
我添加了我希望实现的类设计(即通用哈希图)。我遇到的问题是我想要一种方法让用户查询特定键是否存储为特定类型。