0

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

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

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

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

其中输入类为:

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

2 回答 2

3

你需要的是 boost::unordered_map: http://www.boost.org/doc/libs/1_53_0/doc/html/boost/unordered_map.html

顺便说一句,现在 unordered_map 包含在 C++11 中。

于 2013-03-04T13:08:07.233 回答
3

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() );
于 2013-03-04T13:10:06.557 回答