私は、複数のキーを持つカスタムパーティクルオブジェクトの大きなstd :: vectorを持っています。それは、50〜250k粒子を含む100MBほどの大きさではありません。大きなキーを複数のキーで並べ替え、ストアマッピング
私は、異なる属性などによって、これらの粒子をプロットすることができるようにしたい:...それらの線に沿って気にいら
particle[p].kin_energy/particle[p].mass/particle[p].comet
。そして、私はこれらのキーで並べ替える必要があります。私のアプリケーションの一部は、計算が終わった後にこれらの粒子をプロットしています。しかし、大規模なベクトルをオンザフライで並べ替えることは、15sek(それは長くなる)を取ることができます。複数のプリソートされたベクトルを別のキーで保存することは、多くのラムを必要とします。
異なる注文を同じベクターにマップする方法はありますか?このようなもの?
pair<position_ordered_by_mass;position_in_original_vector> mass_mapping;
だから私は、すべての粒子と1つのベクトルを維持し、position_ordered_by_massを反復処理することにより、プロットの横になる粒子を見つけるためにmass_mappingを使用することができます。
これを行うコンテナ、または効率的なアプローチがありますか?
私はboost :: mulimap std :: mapといくつかの他のものを見ましたが、私が探していたものは実際には見つかりませんでした。
答えがThxの場合、私はそのアプローチを試し、十分なパフォーマンスが得られるかどうかを確認します。キャッシュミスについて知りませんでした - >知っておきたいこと:) – Lumbricus