読者です 読者をやめる 読者になる 読者になる

Boost 1.36 リリース

C++

Boost 1.36がリリースされました。
http://www.boost.org/users/news/version_1_36_0
新しく追加されたライブラリは

  • Accumulators
  • Exception
  • Units
  • Unordered

です。
内容はLet's Boostにすでに紹介が出ています。
Unorderedはハッシュを使うコンテナで、標準C++ライブラリの拡張案(TR1)を実装したものです。自分で作った型を入れる場合はoperator==とハッシュ関数を書かなければならないのですが、標準の型に関してはハッシュ関数が提供されていて、本家を調べてみると自作の型に関しても

  • ユニークな値(idとか)を持つオブジェクトはその値だけをハッシュしてやればいい(ハッシュなんだしそりゃそうだ)
  • 2つ以上の値の組合せがユニークとなるオブジェクト(point型のx,yとか)はboost::hash_combineを使う

とかがこの辺に書いてありました。上の二つは"Extending boost::hash for a custom data type"と"Combining hash values"のページです。
・・・が、boost::hash_combineはTR1には入らずにTR2に持ち越すらしい?