初投稿でこんな頭の悪い記事を書くのも恥ずかしいのですが…
何も考えずに脊髄だけでプログラム書いてたら出くわした現象です。
hoge.cpp
std::vector<int> test = {1, 2};
std::vector<int>().swap(test); //時折解説サイトで見かける初期化法
test.resize(2); //こんなことする人もいないとは思う
test.push_back(3);
test.push_back(4);
test.push_back(5);
for(int i = 0; i < test.size(); i++) {
std::cout << "test[" << i << " = " << test[i] << std::endl;
/* 出力結果:
test[0] = 1
test[1] = 2
test[2] = 3
test[3] = 4
test[4] = 5
*/
}
そもそもやろうとしてたことが頭悪かったので、特に解決策なんかは探してません。
shrink_to_fit()とか使えば出来そうな気はします。
環境依存かもしれないのでコンパイラの情報も載せます。
icpc version 15.0.3 (gcc version 4.4.6 compatibility)