這篇文章主要介紹了c++中不提倡使用vector的原因,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
vector< bool> 并不是一個(gè)STL容器,不是一個(gè)STL容器,不是一個(gè)STL容器!
首先vector< bool> 并不是一個(gè)通常意義上的vector容器,這個(gè)源自于歷史遺留問(wèn)題。
早在C++98的時(shí)候,就有vector< bool>這個(gè)類(lèi)型了,但是因?yàn)楫?dāng)時(shí)為了考慮到節(jié)省空間的想法,所以vector< bool>里面不是一個(gè)Byte一個(gè)Byte儲(chǔ)存的,它是一個(gè)bit一個(gè)bit儲(chǔ)存的!
因?yàn)镃++沒(méi)有直接去給一個(gè)bit來(lái)操作,所以用operator[]的時(shí)候,正常容器返回的應(yīng)該是一個(gè)對(duì)應(yīng)元素的引用,但是對(duì)于vector< bool>實(shí)際上訪問(wèn)的是一個(gè)”proxy reference”而不是一個(gè)”true reference”,返回的是”std::vector< bool>:reference”類(lèi)型的對(duì)象。
而一般情況情況下
vector< bool> c{ false, true, false, true, false }; bool b = c[0]; auto d = c[0];
對(duì)于b的初始化它其實(shí)暗含了一個(gè)隱式的類(lèi)型轉(zhuǎn)換。而對(duì)于d,它的類(lèi)型并不是bool,而是一個(gè)vector< bool>中的一個(gè)內(nèi)部類(lèi)。
而此時(shí)如果修改d的值,c中的值也會(huì)跟著修改:
d = true; for(auto i:c) cout << i << " "; cout << endl; //上式會(huì)輸出1 1 0 1 0
而如果c被銷(xiāo)毀,d就會(huì)變成一個(gè)懸垂指針,再對(duì)d操作就屬于未定義行為。
而為什么說(shuō)vector< bool>不是一個(gè)標(biāo)準(zhǔn)容器,就是因?yàn)樗荒苤С忠恍┤萜髟撚械幕静僮鳎T如取地址給指針初始化操作:
vector< bool> c{ false, true, false, true, false }; &tmp = c[0]; //錯(cuò)誤,不能編譯,對(duì)于引用來(lái)說(shuō),因?yàn)閏[0]不是一個(gè)左值 bool *p = &c[0]; //錯(cuò)誤,不能編譯,因?yàn)闊o(wú)法將一個(gè)臨時(shí)量地址給綁定到指針
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“c++中不提倡使用vector的原因”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
本文標(biāo)題:c++中不提倡使用vector的原因-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.chinadenli.net/article10/dsgpgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、電子商務(wù)、自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容