私はオブジェクトを挿入しているブーストmulti_indexを作成しました。ブーストで挿入後に見つけることができませんmulti_index
次のように私のmulti_indexが見え、
typedef boost::multi_index_container<
Container*,
boost::multi_index::indexed_by<
boost::multi_index::hashed_unique<
boost::multi_index::tag<IndexByUniqueId>,
boost::multi_index::const_mem_fun<StoreMe, Id, &StoreMe::getUId>
>,
boost::multi_index::hashed_non_unique<
boost::multi_index::tag<IndexByNonUId>,
boost::multi_index::const_mem_fun<StoreMe, std::string, &Container::getNUIdString>
>
>
> mi_Container;
I挿入非ユニークIDをオブジェクトとユニークなIDが最初にオブジェクト内に存在しません。後でプログラムの過程で更新され、その後で "getNUIdString"と "getUId"は0 /空でない値を返します。
この場合、一意でないIDを使用して検索しようとすると、保存された値を取得できません。それは挿入時に満たされることが期待されますか?それとも、必要なときに更新されても、その瞬間に自分の価値を見極めることができますか?
EDIT1:
私は「置き換え」またはインデックスを変化させながら、「変更」を使用してインデックスを更新する必要があることを理解しています。だから最初は空の文字列を1つのインデックスのキーとして挿入し、もう1つのインデックスは0を挿入していましたが、特定の値を使用して検索すると何も返されませんでしたか?つまり、空の文字列 ""を使用して検索すると意味します。それは私にすべての値を返す必要があります(したがって、検索時間O(n)になります)?
Edit2: すべての値を空の文字列にマッピングしようとしました。私はまだ結果が得られません。イテレータの最初のペアはend()と等しくなります。私は値が、私はそれを行うだろうか、そのオブジェクトのセッターに設定されているとき一つだけ NON_UNIQUEキーと値のペアのためのキーの値を変更したい場合も
?私はオブジェクトのセッターを介して値を設定するたびにそれを行いたいので、私が持っているmulti_indexを使ってそれを見ることができます。
TIA
-R
ありがとう@ジョーキン!ここであなたの質問への答えは – codeworks
*インデックスはstd :: stringを返します *はい *はい、デバッガでチェックしました。コンテナに27xxxオブジェクトがあります *私は彼らが知っているので、私はそう思いますbe *はい、置き換えなどを使用して要素のキーを変更することはできません いいえ、equal_range( "")はcontainers.end()の最初のペアを返します – codeworks
必要がある場合はお知らせくださいより多くの情報、私はあなたのためにそれを提供することができます。もう一度ありがとう – codeworks