VC++でゲームをつくろうと思うのですが、弾の処理をつくるとき
std::vector<Bullet> bullet; // Bulletは弾のクラス
みたいな感じにしても処理が重くなったりしませんか?
何と比べて?
処理速度が気になるのも分かるけど、
とんちんかんな質問に思える。
普通は、まず素直に作ってみて、プログラムが遅い場合、
ボトルネックを割り出して、そこに対処します。
あなたの作ったプログラムが重かったとしても、
それがvectorが重いからということは多分ないでしょう。
初心者がある程度以上のプログラムを作ろうとするならば、
失敗を恐れずに作りましょう。
推測ですけど
Bulletのサイズが大きくて数が多くて
追加・削除・並べ替えが頻繁にあるなら遅いかもしれない。
でも今時のCPUならそれほど時間はかからない。
体感できないほど短い時間処理時間をさらに高速化するのは無駄だから。
弾の数が多ければ描画や当たり判定の方が
std::vector自体よりネックになりそうだし。
推測ですけどね。
vectorのreserveを使えば、速度的にそんなに問題ないと思われるのは、素人的発想で
しょうか?
reserveで、resizeによるメモリー確保とコピーは防げると思うので、reserveを使えば、
配列と同様な処理速度と思いますが。
具体的な条件が欲しい所ですが、重くならないと思いますよ。
ただ たいちうさんが仰る通り、いろいろ試すのがいいと思います。理論と実践では違う
事が多いからです。
「要素の追加/削除の頻度が多いなら、配列よりリストが良い」等の一般論も、条件(要素
数、要素の大きさ、領域の配置位置、アロケータアルゴリズムの種類 他)によってコロコ
ロ変わります。
故に試行錯誤が良いと考えてます。
std::vectorの選定よりも、弾の処理のアルゴリズムに問題があるのでは?
まぁ、ゲームソフトを作るうえで大変でかつ楽しいのは、
いかに速く処理できるアルゴリズムを考えることだと思います。
ご回答どうもありがとうございます。
実際にプログラムを作って、処理が遅かったら
いろいろと考えようと思います。