POD 構造体のインスタンスの形式のデータがあります。「通常の」条件下では、一意の ID を介してアクセスする必要があります。現在はstd::map
. ただし、何か問題が発生した場合は、POD 構造体の特定のメンバーによって提供される順序でデータをトラバースする必要があります。
エラーが発生した場合に備えて、マップのすべてのデータ セットを優先キューにコピーしたくありません。これは非常にコストがかかるようです。
で実行std::make_heap
してみましたが、のイテレータを減算できないstd::map
ため、コンパイルすらできません。map
ソートキーは定期的に変更されるため、データをプライオリティキューに保持し、ポインターをマップに格納するだけでは、特にマップを介したアクセス (典型的なユースケース) が間接化によってコストが高くなるため、現実的ではないようです。 .
逆に、つまり、必要に応じてヒープ化できる別のデータ構造にポインターを格納することは可能ですが、同期はエラーを起こしやすい可能性があります。
私が望むものを達成するstd
ライブラリ、boostまたはtbbには何かありますか?