C++のstd::vectorのコンストラクタの引数はreserveじゃなくてresize

タイトルの通り. あらかじめ挿入する要素数がわかっている場合に, メモリをまとめて確保したい. そういう場合こんな風にできる.

std::vector<double> retval;
retval.reserve(10);

; // 以下でpush_back

これを勘違いして,

std::vector<double> retval(10);

; // 以下でpush_back

としてしまっていた. これは"retval.resize(10);"を呼んだに等しいため, 要素数が二倍になってしまう.

http://www.cplusplus.com/reference/vector/vector/vector/