3 つのベクトルを持つデータ構造 (ある種のハッシュ マップ) を実装するクラスがあります。
std::vector<uint64_t> keys; // storage of keys to values (actually hash values)
std::vector<int> values; // storage for values (some integer)
std::vector<bool> allocated; // vector of allocated elements
各ベクトルは同じサイズ (たとえば 8 要素) です。
このようになります
keys: 32233 52263 0 22224 0 87222 65432 0
values: 234 44 0 43 0 78 98 0
allocated: 1 1 0 1 0 1 1 0
割り当てられたベクトルを反復処理し、値ベクトル
の対応する値とキー ベクトルのキー
を返すことができるカスタム イテレータを実装したいと思います。空のスポット (割り当てられたベクトルで 0 としてマークされている) は、これらのスポットがフリー スポットと見なされるため、無視する必要があります。繰り返し割り当てられた各スポットのペアタイプを返すことができるかもしれないと思ったstd::pair< key, value >
ので、キーを としてit->first
、値をとして持っていましit->second
た。
これを実装する方法が本当にわかりません。これはまったく可能ですか?誰かが私に小さなサンプルコードを提供できれば素晴らしいでしょう. たぶん、これは私が考えるよりもさらに単純です。
よろしくお願いします。