私の毎日の仕事の間、私はいつもチームの上級メンバーによってキャッシュフレンドリーではないことを知らされていますので、私はvector
にすべきです。私はlist
が連続していないので、メモリの割り当てがメモリ全体に分散していることを理解しています。カスタムアロケータを使用してstd :: listキャッシュをフレンドリにするには?
しかし、非常に多くの場合、list
(またはmap
)という機能が必要です。だから私は自分自身のアロケータを書くことができるかどうか疑問に思っています。これはvector
の下にあります。私がpush_back
になるたびに、私自身のアロケータは、割り当てられた1つあたりの新しいアイテムを割り当てますvector
。
list
/map
を移動すると、キャッシュのローカリティは保持されます。
これはあなたの誰かにとって意味がありますか?
'std :: list'は連想コンテナではありません。 – juanchopanza
あなたの探していることはスタックアロケータと呼ばれます – NathanOliver
明白な質問:単に 'vector'を使わないのはなぜですか?この構造は 'ベクトル'はないとあなたに何を与えるのでしょうか?通常、 'list'に' vector'よりも効率的な機能を使用しようとすると、メモリがリークします。 – user2357112