免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
STL中vector轉(zhuǎn)數(shù)組(實(shí)際是數(shù)組的指針)(zz)

轉(zhuǎn)載自:http://nianning1981.blog.163.com/blog/static/3083014320103171299619/

感謝:http://topic.csdn.net/t/20050429/20/3976956.html

感謝:http://yzyanchao.blogbus.com/logs/47796444.html

不過(guò)那邊是轉(zhuǎn)載自《effective stl》。

std::vector很方便,但有時(shí)調(diào)用的函數(shù)的參數(shù)規(guī)定是數(shù)組,需要將vector轉(zhuǎn)為數(shù)組,另外開(kāi)辟一個(gè)空間,將vector一項(xiàng)項(xiàng)復(fù)制過(guò)去代價(jià)過(guò)大,可用下面的方法。

給定一個(gè)

vector<int> v;

表達(dá)式v[0]生產(chǎn)一個(gè)指向vector中第一個(gè)元素的引用,所以,&v[0]是指向那個(gè)首元素的指針。vector中的元素被C++標(biāo)準(zhǔn)限定為存儲(chǔ)在連續(xù)內(nèi)存中,就像是一個(gè)數(shù)組,所以,如果我們想要傳遞v給這樣的C風(fēng)格的API:

void doSomething(const int* pInts, size_t numInts);

我們可以這么做:

doSomething(&v[0], v.size());

也許吧??赡馨伞Nㄒ坏膯?wèn)題就是,如果v是空的。如果這樣的話,v.size()是0,而&v[0]試圖產(chǎn)生一個(gè)指向根本就不存在的東西的指針。這不是件好事。其結(jié)果未定義。一個(gè)較安全的方法是這樣:

if (!v.empty()) {

doSomething(&v[0], v.size());

}

如果你在一個(gè)不好的環(huán)境中,你可能會(huì)碰到一些半吊子的人物,他們會(huì)告訴你說(shuō)可以用v.begin()代替&v[0],因?yàn)椋ㄟ@些討厭的家伙將會(huì)告 訴你)begin返回指向vector內(nèi)部的迭代器,而對(duì)于vector,其迭代器實(shí)際上是指針。那經(jīng)常是正確的,但正如條款50所說(shuō),并不總是如此,你 不該依賴(lài)于此。begin的返回類(lèi)型是iterator,而不是一個(gè)指針,當(dāng)你需要一個(gè)指向vector內(nèi)部數(shù)據(jù)的指針時(shí)絕不該使用begin。如果你基 于某些原因決定鍵入v.begin(),就應(yīng)該鍵入&*v.begin(),因?yàn)檫@將會(huì)產(chǎn)生和&v[0]相同的指針,這樣可以讓你有更多 的打字機(jī)會(huì),而且讓其他要弄懂你代碼得人感覺(jué)到更晦澀。坦白地說(shuō),如果你正在和告訴你使用v.begin()代替&v[0]的人打交道的話,你該 重新考慮一下你的社交圈了。(譯注:在VC6中,如果用v.begin()代替&v[0],編譯器不會(huì)說(shuō)什么,但在VC7和g++中這么做的話, 就會(huì)引發(fā)一個(gè)編譯錯(cuò)誤)


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
polyline中使用vector
EffectiveSTL:Item16:如何將vector和string的數(shù)據(jù)傳給傳統(tǒng)的A...
學(xué)習(xí)C++
Vector模板類(lèi)的使用
【精選】【C++數(shù)據(jù)結(jié)構(gòu)】vector_c++ vector 結(jié)構(gòu)體
c++ vector用法(1)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服