C++の標準ライブラリの一つにvectorがあり、vector関数の中にresize()とreserve()というものがある。
vectorの要素数を増やすのはresize()であり、reserve()とは別物で呼んでも要素数は変わらない。
vectorの要素数が増える時には、内部的には以下のような事が起きる。
1. 新しい領域を確保(new)する。
2. 古い領域から、今までの要素を新しい領域にコピーする。
3. 古い領域を捨てる(delete)。
これは結構重い処理なので、これをできるだけやらないために、vectorには「実際の要素数(size())より大き目の領域をとっておく」機能が有り、これがreserve()である。
例えばreserve(1000);とすると、その後要素数が1000個を超えるまでは上の1~3の処理をしなくて済むので、速くなる。
vectorの要素数を増やすのはresize()であり、reserve()とは別物で呼んでも要素数は変わらない。
vectorの要素数が増える時には、内部的には以下のような事が起きる。
1. 新しい領域を確保(new)する。
2. 古い領域から、今までの要素を新しい領域にコピーする。
3. 古い領域を捨てる(delete)。
これは結構重い処理なので、これをできるだけやらないために、vectorには「実際の要素数(size())より大き目の領域をとっておく」機能が有り、これがreserve()である。
例えばreserve(1000);とすると、その後要素数が1000個を超えるまでは上の1~3の処理をしなくて済むので、速くなる。
※コメント投稿者のブログIDはブログ作成者のみに通知されます