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

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

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

首頁書籍教程計算機書庫 → STL常見問題工具書 2017 最新版

STL常見問題工具書

STL常見問題工具書2017 最新版

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

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

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

    STL常見問題工具書說明:

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

    typedef map<CString,CFileAttribute> MAPStr2FileAttr;

    typedef map<CString,CFileAttribute *> MAPStr2FileAttr; 

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

    若定義的map的存儲對象是一個類對象:

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

    若定義的map存儲對象是一個類對象的指針:

    這時一般不能采用clear()函數(shù),因為clear()不會自動釋放原來對象所占用的內(nèi)存。這時可以使用erase()輔助delete語句進行元素刪除和內(nèi)存釋放。

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

    另外使用的是類對象指針時,還需要維護這個指針不受到破壞。

    小結(jié):

    如果用容器存副本,則容器銷毀的時候,副本也會自動被刪除。

    如果用容器存指針,則容器銷毀的時候,不會刪除這些指針所指向的對象,因此必須先手工刪除完畢之后,再銷毀容器。

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

    例如下代碼:

    //srcfileAttribute.nIndex初始為0

    CFileAttribute srcfileAttribute = m_mapKeyVsFile[“abc”];

    srcfileAttribute.nIndex++;

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

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

    這是為什么呢??

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

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

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

    關(guān)于STL:

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

    PC官方
    安卓官方手機版
    IOS官方手機版

    STL常見問題工具書截圖

    下載地址

    STL常見問題工具書 2017 最新版

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

    編輯推薦

    本類軟件必備

    報錯

    請簡要描述您遇到的錯誤,我們將盡快予以修正。

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

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