vector.resize()について – プログラミング – Home

通知
すべてクリア

[解決済] vector.resize()について


初心者
 初心者
(@初心者)
ゲスト
結合: 25年前
投稿: 206
Topic starter  

vectorのresizeで困惑していることがありますので質問します。

例えば、

vector<int> n(3);

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

n.resize(2);

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


引用未解決
トピックタグ
初心者
 初心者
(@初心者)
ゲスト
結合: 25年前
投稿: 206
Topic starter  

訂正します
n[2]の内容とn[2]が使用していたメモリは自動で破棄されるのでしょうか。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

されます。そうでないと使えないし。
# 実際は次にpush_backされたときの再利用のため溜め込んでるんじゃないかな。


返信引用
DD.
 DD.
(@DD.)
ゲスト
結合: 20年前
投稿: 10
 

vector::resize でサイズを n に変更する場合で、

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

と、あります。

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


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 25年前
投稿: 206
Topic starter  

επιστημηさん
DD.さん
参考になりました。
どうもありがとうございます。


返信引用
初心者
 初心者
(@初心者)
ゲスト
結合: 25年前
投稿: 206
Topic starter  

解決のチェックをいれるのを忘れてました


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました