vector.resize()について

[戻る]
初心者 2005/09/14(水) 16:17:21
vectorのresizeで困惑していることがありますので質問します。

例えば、

vector<int> n(3);

n[0] = 1;
n[1] = 2;
n[2] = 3;

n.resize(2);

とした場合、n[2]の内容は自動で破棄されるのでしょうか。

初心者 2005/09/14(水) 16:21:46
訂正します
n[2]の内容とn[2]が使用していたメモリは自動で破棄されるのでしょうか。

επιστημη [E-Mail] 2005/09/14(水) 16:25:43
されます。そうでないと使えないし。
# 実際は次にpush_backされたときの再利用のため溜め込んでるんじゃないかな。

DD. 2005/09/14(水) 16:37:52
vector::resize でサイズを n に変更する場合で、

Effective STL 第14項 1行目から引用:
n が現在のサイズより小さい場合、コンテナの末尾にある要素は破棄される。

と、あります。

># 実際は次にpush_backされたときの再利用のため溜め込んでるんじゃないかな。
vector でガバッとメモリを確保してからゴソッと vector::resize して要素を減らして
も、やっぱり vector::capacity の内容は変わりませんでした。

初心者 2005/09/14(水) 16:52:42
επιστημηさん
DD.さん
参考になりました。
どうもありがとうございます。

初心者 2005/09/14(水) 16:53:30
[[解決]]
解決のチェックをいれるのを忘れてました

επιστημη [E-Mail] 2005/09/14(水) 17:15:06
>># 実際は次にpush_backされたときの再利用のため溜め込んでるんじゃないかな。
> vector でガバッとメモリを確保してからゴソッと vector::resize して要素を減らして
> も、やっぱり vector::capacity の内容は変わりませんでした。

でしょうね。ガバッと確保した連続領域をちびちび解放するすべがありませんから。

古いスレッドには追加発言できません。