目次から探す
std::vectorの注意点
std::vectorは、可変長配列を扱うためのSTLコンテナです。しかし、使用する際にはいくつかの注意点があります。
メモリの確保
std::vectorは、要素数が増えるにつれて自動的にメモリを確保します。
しかし、初期状態ではあまり多くのメモリを確保していないため、大量の要素を追加する場合は、メモリの再確保に時間がかかるため、処理性能が大幅に低下します。
ですが、事前にメモリを確保しておくことで、新たに要素を追加してもメモリの再確保が行われずパフォーナンスを下げずに大量の要素を追加することが可能です。
ですので、事前に必要な要素数を指定してメモリを確保しておくことがおすすめです。
std::vector<int> v(1000); // 要素数1000個分のメモリを事前に確保
//後で変更する場合はresizeメソッドを使う
v.resize(1000000); //100万個分のメモリを事前に確保
要素の削除によるメモリの解放
std::vector
から要素を削除すると、その要素が占めていたメモリ領域は解放されます。
しかし、std::vector
自体が確保済みのメモリ領域は解放されません(再利用できるようにするため)。
そのため、大量の要素を削除した後でもメモリ使用量が減らない場合があります。
std::vectorが占有しているメモリのうち、未使用分を解放する場合、resizeメソッドとsizeメソッドを組み合わせることで簡単に行なえます。
std::vector<int> v(1000);
v.resize(v.size()); //現在占有中のメモリ以外を解放する
メモリの再確保を行うため大量のデータを扱う場合は処理が重いですが、無駄に圧迫しているメモリを開放できるので、必要に応じてメモリ解放を行うようにしましょう。
以上が std::vector
の注意点です。これらに気を付けて使うことで安全かつ効率的なプログラム作成が可能です。