山口屋~活動日誌~

私生活で主な出来事をピックアップ

C++ reserve()

2007-06-23 23:33:43 | ソフトウェア開発
C++の標準ライブラリの一つにvectorがあり、vector関数の中にresize()とreserve()というものがある。

vectorの要素数を増やすのはresize()であり、reserve()とは別物で呼んでも要素数は変わらない。

vectorの要素数が増える時には、内部的には以下のような事が起きる。

1. 新しい領域を確保(new)する。
2. 古い領域から、今までの要素を新しい領域にコピーする。
3. 古い領域を捨てる(delete)。

これは結構重い処理なので、これをできるだけやらないために、vectorには「実際の要素数(size())より大き目の領域をとっておく」機能が有り、これがreserve()である。

例えばreserve(1000);とすると、その後要素数が1000個を超えるまでは上の1~3の処理をしなくて済むので、速くなる。


最新の画像もっと見る

コメントを投稿