十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
庫:沒錯(cuò)誤,比框架小,用來解決小問題。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供德江網(wǎng)站建設(shè)、德江做網(wǎng)站、德江網(wǎng)站設(shè)計(jì)、德江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、德江企業(yè)網(wǎng)站模板建站服務(wù),10余年德江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
框架:解決開發(fā)中某個(gè)功能很全。
STL:標(biāo)準(zhǔn)規(guī)范,代碼不一樣,風(fēng)格,框架有差異
包括:
算法
容器
STL包括:
容器:容納數(shù)據(jù)的結(jié)構(gòu)
迭代器:扮演容器和算法的膠合劑
空間配置器:內(nèi)存空間(動(dòng)態(tài)分配)的分配與管理
配接器:一種修飾容器的東西:stack,queue,eg:反向迭代器
更約束,不支持遍歷
算法#include
仿函數(shù)
迭代器:指向一個(gè)迭代器,類似指針(一個(gè)類型封裝的指針)
迭代器失效:類似野指針,和刪除有關(guān)
erase參數(shù)
1.一個(gè)位置(迭代器)
2.位置區(qū)域(迭代器)
迭代器(iterator)是一個(gè)可以對(duì)其執(zhí)行類似指針的操作(如:解除引用(operator*())和遞增(operator++()))的對(duì)象,我們可以將它理解成為一個(gè)指針。但它又不是我們所謂普通的指針,我們可以稱之為廣義指針,你可以通過sizeof(vector::iterator)來查看,所占內(nèi)存并不是4個(gè)字節(jié)。
首先對(duì)于vector而言,添加和刪除操作可能使容器的部分或者全部迭代器失效。那為什么迭代器會(huì)失效呢?vector元素在內(nèi)存中是順序存儲(chǔ),試想:如果當(dāng)前容器中已經(jīng)存在了10個(gè)元素,現(xiàn)在又要添加一個(gè)元素到容器中,但是內(nèi)存中緊跟在這10個(gè)元素后面沒有一個(gè)空閑空間,而vector的元素必須順序存儲(chǔ)一邊索引訪問,所以我們不能在內(nèi)存中隨便找個(gè)地方存儲(chǔ)這個(gè)元素。于是vector必須重新分配存儲(chǔ)空間,用來存放原來的元素以及新添加的元素:存放在舊存儲(chǔ)空間的元素被復(fù)制到新的存儲(chǔ)空間里,接著插入新的元素,最后撤銷舊的存儲(chǔ)空間。這種情況發(fā)生,一定會(huì)導(dǎo)致vector容器的所有迭代器都失效。
我們看到實(shí)現(xiàn)上述所說的分配和撤銷內(nèi)存空間的方式以實(shí)現(xiàn)vector的自增長(zhǎng)性,效率是極其低下的。為了使vector容器實(shí)現(xiàn)快速的內(nèi)存分配,實(shí)際分配的容器會(huì)比當(dāng)前所需的空間多一些,vector容器預(yù)留了這些額外的存儲(chǔ)區(qū),用來存放新添加的元素,而不需要每次都重新分配新的存儲(chǔ)空間。你可以從vector里實(shí)現(xiàn)capacity和reserve成員可以看出這種機(jī)制。
capacity和size的區(qū)別:size是容器當(dāng)前擁有的元素個(gè)數(shù),而capacity則指容器在必須分配新存儲(chǔ)空間之前可以存儲(chǔ)的元素總數(shù)。
vector迭代器的幾種失效的情況: 1.當(dāng)插入(push_back)一個(gè)元素后,end操作返回的迭代器肯定失效。 2.當(dāng)插入(push_back)一個(gè)元素后,capacity返回值與沒有插入元素之前相比有改變,則需要重新加載整個(gè)容器,此時(shí)first和end操作返回的迭代器都會(huì)失效。 3.當(dāng)進(jìn)行刪除操作(erase,pop_back)后,指向刪除點(diǎn)的迭代器全部失效;指向刪除點(diǎn)后面的元素的迭代器也將全部失效。
deque迭代器的失效情況: 在C++Primer一書中是這樣限定的: 1.在deque容器首部或者尾部插入元素不會(huì)使得任何迭代器失效。 2.在其首部或尾部刪除元素則只會(huì)使指向被刪除元素的迭代器失效。 3.在deque容器的任何其他位置的插入和刪除操作將使指向該容器元素的所有迭代器失效