vectorを使おう! 〜脱 new hoge[N] 〜
C++で動的に配列を確保するときは、通常
hoge* foo = new hoge[N];
とするように習うと思う。そして確保したメモリを解放するには
delete [] foo;
するように習うとおもう。
しかし、ここで僕はvectorを使うことを推奨しようとおもう。その理由は
- 通常の動的確保配列として使える
- パフォーマンスは変わらない
- deleteをしなくて良い
- コードが書きやすい
vectorを使いたいときはまずヘッダをインクルードする
#include <vector>
その上で、配列確保はこうする
vector<hoge> foo(N);
// あるいは
vector<hoge> fuga = vector<hoge>(N);
では、ポインタとして使いたい場合はどうするか
// 一番最初のアドレス hoge* foo_begin = foo.begin().base(); // 最後+1のアドレス hoge* foo_end = foo.end().base(); // 任意の位置の要素 hoge& foo_i = foo[i];
他にもdequeとかlistとかあるので、使ってあげてくださいね。(listは要素を削除する時ぐらいしかパフォーマンス上有利でないので気をつけること)