には存在していない場合にはゼロを返す:キーは、私は次のコンテナ持っ
std::unordered_map<uint8_t,int> um;
um
が0と255すべてではなく、それらの間の鍵を持っていると想定されています。だから、特定の時点で私は例えばキー13の値を私に与えてくれるようにしたいと思っています。それがあれば、私はその価値を望んでいます(0でないことが保証されています)。そうでない場合は、0を返すようにします。
これを実装する最も良い方法は何ですか?
今まで私が試したことは:findを使用して、見つからなかった場合は0を、見つからなかった場合は値を返します。
P.S. 256個のアイテムを含むstd::vector<int>
に変更することは選択できません。私は256の値を常に格納する余裕がありません。
EDIT:
私の問題は、ヒストグラム・コンピューティングの問題キー(色0〜255)の値(頻繁に、intは十分である)です。私はちょうどいくつかのキーが存在するかどうかを知っていれば満足できません。私はまた、値(頻繁)が必要です。
追加情報:
- 私は、任意の項目を消去することはありません。
- 時々アイテムを追加します(最大256アイテム)。通常は10未満です。
- 私は何度もキーを照会します。
- 通常、クエリと挿入には特定の順序はありません。
よく「find」は一定時間ですので、何かが速く見つかるとは限りません。 – NathanOliver
また、 'ベクトル'を使うこともできます。それは256バイトといくつかの本を保持するだけです。 –
NathanOliver
@ NathanOliverブールのベクトルが私に役立たず、値(int)は0または1だけではない実数を含む可能性があります。 –