• ベストアンサー

STLのvectorのデフォルトの予約要素数は?

STLのvectorコンテナの、あらかじめメモリに確保される要素数はreserve関数で変更できますが、reserve関数を使わない時のデフォルトの予約要素数っていくつかご存知の方いますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

それは使うSTLによって実装が違うと思いますが ためしに自作のallocatorをかませて、bcc及びvc++2005で確認しましたが どちらもpush_backやreserveを行うまでメモリの確保は発生しませんでした。 つまり普通は0だと思います。 ちなみにメモリの拡張のされ方はbccとvc++2005では違いました。 bccは最初のpush_backで最初に256個の要素が確保されましたが、 vc++2005では1個のみでした。 その辺の細かい実装方法についてはSTLのソースを見るしかないと思います。

BearCave
質問者

お礼

VC++の1個はかなり非効率ですね。必ずreserveを呼んで変更しないとヤバそうです。情報ありがとうございました。

その他の回答 (1)

回答No.2

実装依存です。 規格では規定されていません。

BearCave
質問者

お礼

なるほど、分かりました。初期値に頼らず必ずreserveしたいと思います。

関連するQ&A