使用boost库的简单哈希表

时间:2013-03-04 13:04:56

标签: c++ boost hashtable

是否有使用boost lib的哈希表实现的简单示例。我从文档中读到了以下内容

boost::hash<int,std::string> input;

我需要知道我是否可以使用哈希表,如:

input.add<key,instance_of_input_class>  //pseudo code 

其中输入类为:

class Input
{
    int id;
    std::String name;
}

2 个答案:

答案 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() );