0

ブースト ライブラリを使用したハッシュ テーブルの実装の簡単な例はありますか。ドキュメントから次のことを読みました

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 に答える