是否有使用 boost lib 实现哈希表的简单示例。我从文档中阅读了以下内容
boost::hash<int,std::string> input;
我需要知道我是否可以使用哈希表,例如:
input.add<key,instance_of_input_class> //pseudo code
其中输入类为:
class Input
{
int id;
std::String name;
}
你需要的是 boost::unordered_map: http://www.boost.org/doc/libs/1_53_0/doc/html/boost/unordered_map.html
顺便说一句,现在 unordered_map 包含在 C++11 中。
boost::hash
不是哈希表,它只是计算哈希值。请参阅 Boost文档以了解如何将其与无序容器组合,并阅读容器文档以了解如何插入值。
您的评论声明了一个类型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() );