私はlist of items
(ItemList
と呼ばれるクラスのインスタンス)を持つクラスを持っています。boost_unorderedのハッシュ関数ですが、デフォルトはありませんか?
ItemIndexType AddItem(...);
void DoSomething(ItemIndexType index, ...);
ItemIndexType
"スマート反復子" のいくつかの種類として機能し、メンバ変数
myIter (iterator to a multimap in the ItemList)
があり、
myList (pointer to the ItemList)
: このItemList
クラスは、次のような機能を持っています。
さらにハウスキーピングに使用されています。
ItemListからアイテムを削除すると、そのアイテムを指すすべてのインデックスがクリアされるので、賢明です。 (地図の最後を指す)。
これは今のところ意図どおりに動作しており、私はもはやあまりそれをあまり変更しません。しかし、アプリケーションのために、私は余分な何かをする必要があります。
void ResetItem(ItemIndexType ind);
この関数その後、元の値にまでアイテムind
ポイントを「リセット」になります。私は、関数が「リセット」を構築しています。私はitemクラス内にorignal値を格納したくないので、itemindexをキーとし、アイテムが構築された元の引数をvalueとするコンテナを作成することにしました。
注文は必要ないだけでなく、不可能です。私はboost :: unorderedが行く方法だと考えています。私はハッシュテーブルにインデックスを追跡するために使用デックを変更
は、しかし奇妙なエラーをもたらした:
機能\ハッシュの\ extensions.hpp(176)\Xの\ブースト:エラーC2665:「ブースト: :HASH_VALUE」:カスタムデータ型のハッシュ関数を作成する方法
typedef boost::unordered_map<ItemIndexType, ListDataType> ListContType;
:16のオーバーロードのどれもリストがで作成されたすべての引数の型
を変換することができませんでしたか?
"Boost.Unorderedはboost :: hashを使用しているため、標準コンテナを含むいくつかの他の型もサポートしています。 Boost.Hashを拡張して型をサポートするか、独自のカスタム同値述語とハッシュ関数を使用する必要があります。 - > http://www.boost.org/doc/libs/1_45_0/doc/html/hash/custom.html – icecrime
おかげで、特定のキー(myIterに格納されているイテレータ)を特定するのに役立ちます。 std :: * iteratorから型の中の1つへの変換を与えないでください! – paul23