是否有使用boost lib的哈希表实现的简单示例。我从文档中读到了以下内容
boost::hash<int,std::string> input;
我需要知道我是否可以使用哈希表,如:
input.add<key,instance_of_input_class> //pseudo code
其中输入类为:
class Input
{
int id;
std::String name;
}
答案 0 :(得分:3)
你需要的是boost :: unordered_map:http://www.boost.org/doc/libs/1_53_0/doc/html/boost/unordered_map.html
BTW,现在unordered_map包含在C ++ 11中。
答案 1 :(得分:3)
boost::hash
不是哈希表,只是计算哈希值。请参阅Boost documentation了解如何将其与无序容器相结合,并阅读容器的documentation,了解如何插入值。
您的评论声明了map
类型,而不是该类型的实例,因为您使用的是typedef
。
您的帖子还暗示您可能甚至不想/需要boost::hash
,请尝试
std::unordered_map< int, std::string > my_map;
当然,您也可以使用boost::unordered_map
代替std::unordered_map
,以防后者不起作用或您只是想要使用它。
现在为您的类添加一个方法以允许访问值:
class Input
{
int id;
std::string name; // note: lowercase string, not String
public:
std::pair< int, std::string > values() const
{
return std::make_pair( id, name );
}
};
并使用它将Input
的实例插入到地图中:
Input my_input;
my_map.insert( my_input.values() );