91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

STL庫初探

發布時間:2020-06-22 07:48:32 來源:網絡 閱讀:333 作者:小止1995 欄目:編程語言

庫:沒錯誤,比框架小,用來解決小問題。

框架:解決開發中某個功能很全。

STL:標準規范,代碼不一樣,風格,框架有差異

包括:

    算法

    容器

STL包括:

  1. 容器:容納數據的結構

  2. 迭代器:扮演容器和算法的膠合劑

  3. 空間配置器:內存空間(動態分配)的分配與管理

  4. 配接器:一種修飾容器的東西:stack,queue,eg:反向迭代器

    更約束,不支持遍歷

  5. 算法#include<algorithm>

  6. 仿函數


STL庫初探

迭代器:指向一個迭代器,類似指針(一個類型封裝的指針)

迭代器失效:類似野指針,和刪除有關

erase參數

    1.一個位置(迭代器)

    2.位置區域(迭代器)


迭代器(iterator)是一個可以對其執行類似指針的操作(如:解除引用(operator*())和遞增(operator++()))的對象,我們可以將它理解成為一個指針。但它又不是我們所謂普通的指針,我們可以稱之為廣義指針,你可以通過sizeof(vector::iterator)來查看,所占內存并不是4個字節。


    首先對于vector而言,添加和刪除操作可能使容器的部分或者全部迭代器失效。那為什么迭代器會失效呢?vector元素在內存中是順序存儲,試想:如果當前容器中已經存在了10個元素,現在又要添加一個元素到容器中,但是內存中緊跟在這10個元素后面沒有一個空閑空間,而vector的元素必須順序存儲一邊索引訪問,所以我們不能在內存中隨便找個地方存儲這個元素。于是vector必須重新分配存儲空間,用來存放原來的元素以及新添加的元素:存放在舊存儲空間的元素被復制到新的存儲空間里,接著插入新的元素,最后撤銷舊的存儲空間。這種情況發生,一定會導致vector容器的所有迭代器都失效。


我們看到實現上述所說的分配和撤銷內存空間的方式以實現vector的自增長性,效率是極其低下的。為了使vector容器實現快速的內存分配,實際分配的容器會比當前所需的空間多一些,vector容器預留了這些額外的存儲區,用來存放新添加的元素,而不需要每次都重新分配新的存儲空間。你可以從vector里實現capacity和reserve成員可以看出這種機制。


    capacity和size的區別:size是容器當前擁有的元素個數,而capacity則指容器在必須分配新存儲空間之前可以存儲的元素總數。


    vector迭代器的幾種失效的情況: 1.當插入(push_back)一個元素后,end操作返回的迭代器肯定失效。 2.當插入(push_back)一個元素后,capacity返回值與沒有插入元素之前相比有改變,則需要重新加載整個容器,此時first和end操作返回的迭代器都會失效。 3.當進行刪除操作(erase,pop_back)后,指向刪除點的迭代器全部失效;指向刪除點后面的元素的迭代器也將全部失效。


    deque迭代器的失效情況: 在C++Primer一書中是這樣限定的: 1.在deque容器首部或者尾部插入元素不會使得任何迭代器失效。 2.在其首部或尾部刪除元素則只會使指向被刪除元素的迭代器失效。 3.在deque容器的任何其他位置的插入和刪除操作將使指向該容器元素的所有迭代器失效

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 石门县| 沂源县| 锡林郭勒盟| 牟定县| 利川市| 太和县| 惠州市| 淮北市| 合阳县| 孟津县| 资阳市| 藁城市| 三亚市| 宁远县| 台东市| 鄂尔多斯市| 建平县| 五原县| 潜江市| 左权县| 高淳县| 延吉市| 瑞安市| 钦州市| 思茅市| 青冈县| 清镇市| 定远县| 车致| 华亭县| 嘉义市| 易门县| 阳江市| 洪洞县| 会泽县| 定陶县| 西吉县| 兴国县| 班玛县| 海安县|