第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

求助一下關(guān)于c++ vector clear() 方法的問(wèn)題!

求助一下關(guān)于c++ vector clear() 方法的問(wèn)題!

哈士奇WWW 2021-10-27 21:15:46
int main(int argc, char *argv[]){ int array[5]={1,3,2,5,4};vector<int> v(array,array+5); //sort(v);sort(v.begin(),v.end());v.clear() ; ?? 我這里都清空了啊 cout<<v[0];?? 這里為什么還能取出來(lái)值呢 system("PAUSE");return EXIT_SUCCESS;}
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

因?yàn)閷?duì)于vector,clear并不真正釋放內(nèi)存(這是為優(yōu)化效率所做的事),clear實(shí)際所做的是為vector中所保存的所有對(duì)象調(diào)用析構(gòu)函數(shù)(如果有的話),然后初始化size

查看完整回答
反對(duì) 回復(fù) 2021-10-31
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

 vector,clear()并不真正釋放內(nèi)存(這是為優(yōu)化效率所做的事),clear實(shí)際所做的是為vector中所保存的所有對(duì)象調(diào)用析構(gòu)函數(shù)(如果有的話),然后初始化size這些東西,讓覺(jué)得把所有的對(duì)象清除了。
  真正釋放內(nèi)存是在vector的析構(gòu)函數(shù)里進(jìn)行的,所以一旦超出vector的作用域(如函數(shù)返回),首先它所保存的所有對(duì)象會(huì)被析構(gòu),然后會(huì)調(diào)用allocator中的deallocate函數(shù)回收對(duì)象本身的內(nèi)存。
  所以,某些編譯器clear后還能訪問(wèn)到對(duì)象數(shù)據(jù)(因?yàn)樗緵](méi)清除),在一些比較新的C++編譯器上(例如VS2008),當(dāng)進(jìn)行數(shù)組引用時(shí)(例如a[2]這種用法),STL庫(kù)中會(huì)有一些check函數(shù)根據(jù)當(dāng)前容器的size值來(lái)判斷下標(biāo)引用是否超出范圍,如果超出,則會(huì)執(zhí)行這樣一句:
  _THROW(out_of_range, "invalid vector<T> subscript");
  即拋出一個(gè)越界異常,clear后沒(méi)有捕獲異常,程序在新編譯器編譯后就會(huì)崩潰掉。

查看完整回答
反對(duì) 回復(fù) 2021-10-31
  • 2 回答
  • 0 關(guān)注
  • 418 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)