コンテナ実装

std::vectorとstd::vectorどっちがいいんだろう。

std::vector std::vector
派生クラスの扱い ×
要素追加 ×(普通に書くと一時オブジェクト発生) △(小さいnew)
読み込み速度 *1 ×(ポインタ参照一回余計に発生)
ソート ×
デストラク 記述なしで大丈夫 delete *i;必要
メモリ効率 ×*2 △(小さなnew頻発)

std::vectorの場合、MyClassを出来るだけ小さくして大きなデータに対してはポインタ保持でCopy-on-Writeイディオム。派生クラス、ソートを扱う必要がある場合はvectorというところかな?

MemoryArenaを使ってメモリ管理する自前コンテナをそのうちに組もう。

*1:ptr i*step+arrayoffset+memberoffsetな感じで最適化がかかる可能性アリ

*2:Allocatorに寄るが、デフォルトで10要素分確保されるのと、需要予測で必要以上に大きなメモリが確保されてしまう可能性アリ