東坡下載:內(nèi)容最豐富最安全的下載站!

幫助|文件類型庫(kù)|最新更新|下載分類|排行榜

說(shuō)明書(shū)三農(nóng)書(shū)屋計(jì)算機(jī)書(shū)庫(kù)健康書(shū)屋中小學(xué)教輔考試寶典經(jīng)典名著電視說(shuō)明書(shū)洗衣機(jī)說(shuō)明書(shū)相機(jī)說(shuō)明書(shū)健康教育公務(wù)員考試

首頁(yè)書(shū)籍教程計(jì)算機(jī)書(shū)庫(kù) → STL常見(jiàn)問(wèn)題工具書(shū) 2017 最新版

STL常見(jiàn)問(wèn)題工具書(shū)

STL常見(jiàn)問(wèn)題工具書(shū)2017 最新版

  • 大。20.4M
  • 語(yǔ)言:中文
  • 平臺(tái):WinAll
  • 更新:2017-02-22 11:55
  • 等級(jí):
  • 類型:計(jì)算機(jī)書(shū)庫(kù)
  • 網(wǎng)站:暫無(wú)
  • 授權(quán):免費(fèi)軟件
  • 廠商:
  • 產(chǎn)地:國(guó)產(chǎn)軟件
好用好玩 50%(0)
坑爹 坑爹 50%(0)
軟件介紹軟件截圖相關(guān)軟件軟件教程網(wǎng)友評(píng)論下載地址

相關(guān)推薦: 編程資料 編程教材

    STL常見(jiàn)問(wèn)題工具書(shū)是今年最新最全的工具資料內(nèi)容,是編程人員在從事工作期間必須要用到的一些東西,有了它你的工作可以更加輕松,每天的工作時(shí)間會(huì)大大縮短,讓你的編程從此更加厲害,需要的下載吧。

    STL常見(jiàn)問(wèn)題工具書(shū)說(shuō)明:

    Q:以下兩種定義方式,在進(jìn)行map.clear()的時(shí)候,內(nèi)存釋放上有啥不同?

    typedef map<CString,CFileAttribute> MAPStr2FileAttr;

    typedef map<CString,CFileAttribute *> MAPStr2FileAttr; 

    A:clear()相當(dāng)于earse(m.begin(),   m.end());

    若定義的map的存儲(chǔ)對(duì)象是一個(gè)類對(duì)象:

    拷貝是整個(gè)STL(Standard Template Library,標(biāo)準(zhǔn)模板庫(kù))工作的方式,所以容器中保存的是副本,而不是要添加的對(duì)象本身。對(duì)象原件在副本拷貝存放結(jié)束后便可以結(jié)束生命,而在使用clear()的時(shí)候,對(duì)象副本會(huì)去走到析構(gòu)函數(shù),進(jìn)行對(duì)象內(nèi)部的內(nèi)存釋放。clear()后,對(duì)象拷貝被析構(gòu),剩下的只是raw   memory,即沒(méi)有被初始化的內(nèi)存,它們將被歸還到stl的內(nèi)存分配器alloc里的(記得嗎,vector/list等所有容器都有一個(gè)alloc參數(shù)的,就是這東西),容器本身已經(jīng)不再擁有這塊內(nèi)存了。內(nèi)存歸還了,只不過(guò)不是歸還入系統(tǒng)堆而已。(除了vector不能(自動(dòng))釋放內(nèi)存,其它STL容器都會(huì)在每一個(gè)erase動(dòng)作后釋放一塊內(nèi)存。)

    若定義的map存儲(chǔ)對(duì)象是一個(gè)類對(duì)象的指針:

    這時(shí)一般不能采用clear()函數(shù),因?yàn)閏lear()不會(huì)自動(dòng)釋放原來(lái)對(duì)象所占用的內(nèi)存。這時(shí)可以使用erase()輔助delete語(yǔ)句進(jìn)行元素刪除和內(nèi)存釋放。

    上面這句話我是這樣理解的,因?yàn)榇嫒氲氖侵羔,這個(gè)指針指向一塊區(qū)域(new出來(lái)的,eg:class A, A *a = new A()),但是畢竟map里面的value值是個(gè)指針,就是一個(gè)地址而已,因此在clear的時(shí)候只是把指針清除掉了,而指針指向的內(nèi)容依舊存在。因此一般要在clear之前先釋放掉這些個(gè)指針指向的空間。

    另外使用的是類對(duì)象指針時(shí),還需要維護(hù)這個(gè)指針不受到破壞。

    小結(jié):

    如果用容器存副本,則容器銷毀的時(shí)候,副本也會(huì)自動(dòng)被刪除。

    如果用容器存指針,則容器銷毀的時(shí)候,不會(huì)刪除這些指針?biāo)赶虻膶?duì)象,因此必須先手工刪除完畢之后,再銷毀容器。

    Q: 對(duì)由key得到的value對(duì)象,沒(méi)有辦法改變其中的數(shù)值嗎??

    例如下代碼:

    //srcfileAttribute.nIndex初始為0

    CFileAttribute srcfileAttribute = m_mapKeyVsFile[“abc”];

    srcfileAttribute.nIndex++;

    但是再次CFileAttribute srcfileAttribute = m_mapKeyVsFile[“abc”];

    發(fā)現(xiàn)這個(gè)srcfileAttribute.nIndex還是0;并沒(méi)有變成1,

    這是為什么呢??

    難道說(shuō)我不能這樣直接改map里面的value值嗎?必須刪除重新insert一個(gè)??

    A:srcfileAttribute = m_mapKeyVsFile[“abc”];此時(shí)srcfileAttrbute是通過(guò)map中值的拷貝構(gòu)造函數(shù)構(gòu)造的一個(gè)新的對(duì)象,這個(gè)副本的改變不影響map中的值,要改變map中的值可以直接m_mapKeyVsFile[“abc”].nIndex++;

    如果用容器存副本,其存入、取出的過(guò)程是通過(guò)拷貝構(gòu)造函數(shù) 和 賦值操作符來(lái)進(jìn)行的。

    關(guān)于STL:

    STL(Standard Template Library)標(biāo)準(zhǔn)模板庫(kù),惠普實(shí)驗(yàn)室開(kāi)發(fā)的一系列軟件的統(tǒng)稱。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普實(shí)驗(yàn)室工作時(shí)所開(kāi)發(fā)出來(lái)的。從根本上說(shuō),STL是一些“容器”的集合,這些“容器”有l(wèi)ist,vector,set,map等,STL也是算法和其他一些組件的集合。這里的“容器”和算法的集合指的是世界上很多聰明人很多年的杰作。STL的目的是標(biāo)準(zhǔn)化組件,這樣就不用重新開(kāi)發(fā),可以使用現(xiàn)成的組件。STL現(xiàn)在是C++的一部分,因此不用額外安裝什么。

    PC官方
    安卓官方手機(jī)版
    IOS官方手機(jī)版

    STL常見(jiàn)問(wèn)題工具書(shū)截圖

    下載地址

    STL常見(jiàn)問(wèn)題工具書(shū) 2017 最新版

    熱門(mén)評(píng)論
    最新評(píng)論
    發(fā)表評(píng)論 查看所有評(píng)論(0)
    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)

    本類軟件必備

    報(bào)錯(cuò)

    請(qǐng)簡(jiǎn)要描述您遇到的錯(cuò)誤,我們將盡快予以修正。

    轉(zhuǎn)帖到論壇
    輪壇轉(zhuǎn)帖HTML方式

    輪壇轉(zhuǎn)帖UBB方式