如果您不太關(guān)心細(xì)節(jié),可以簡單介紹一下基本的實(shí)現(xiàn)思想,大致如下:
1。Vector是一個(gè)順序存儲(chǔ)容器,因此底層實(shí)現(xiàn)通常基于數(shù)組。
2.向量的實(shí)現(xiàn)采用模板元編程技術(shù)。具體來說,編譯器在編譯時(shí)根據(jù)使用時(shí)指定的實(shí)際類型執(zhí)行模板專門化,并編譯相應(yīng)的代碼。也就是說,向量
3。矢量的一個(gè)重要特性是實(shí)現(xiàn)陣列的動(dòng)態(tài)增量。簡單地說,就是記錄容器內(nèi)當(dāng)前的大容量和使用量。在添加元素時(shí),如果container類發(fā)現(xiàn)當(dāng)前容量已經(jīng)耗盡,container類會(huì)自動(dòng)重新分配一個(gè)容量更大的數(shù)組,復(fù)制當(dāng)前所有的元素,然后釋放原來的數(shù)組,從而實(shí)現(xiàn)動(dòng)態(tài)自動(dòng)遞增,對(duì)用戶完全透明。
4.Vector提供了迭代器來提供統(tǒng)一的遍歷訪問接口,以便于與STL中的其他組件進(jìn)行交互。
將會(huì)有很多細(xì)節(jié),例如:
1。是否允許vector在必要時(shí)減少其容量?
2.向量容量耗盡后的增量是多少?
3.是否應(yīng)提供線程安全容器?
有些東西可能真的需要看源代碼才能理解。也可以參考侯杰的STL源代碼分析。其實(shí)向量本身的實(shí)現(xiàn)并不是太復(fù)雜,其實(shí)現(xiàn)思想也很簡單,但在設(shè)計(jì)層面的一些權(quán)衡需要慎重考慮。一般來說,STL是一個(gè)足夠強(qiáng)大的后盾,我們會(huì)經(jīng)常使用它來構(gòu)建健壯高效的軟件。了解STL的一些設(shè)計(jì)思想和實(shí)現(xiàn)方法,有助于提高我們的編程思維和編程能力。
vector如何實(shí)現(xiàn)快速查找?數(shù)據(jù)結(jié)構(gòu)如下:C/C代碼、rstringusername、rstringuserotherinfo}、rvector<userinfouserlist?,F(xiàn)在的問題是,您希望根據(jù)輸入條件在這樣的向量中快速找到元素。條件可以是userid、username或userotherinfo中的任意一個(gè)(例如,如果您查找用戶名為XXX的元素,可能會(huì)有多個(gè)結(jié)果)。\R在查找userotherinfo時(shí),通常會(huì)匹配前幾個(gè)字符(類似于數(shù)據(jù)庫,例如userotherinfo,如“XX%”)\R------------解決方案--------然后不要使用vector,map或set是紅黑樹,查找日志最快的方法是哈希查找。但是,構(gòu)建哈希表有點(diǎn)麻煩。解決方案是:如果目的是直接查找,最好使用關(guān)聯(lián)的容器。另一個(gè)建議是直接使用SQLite的內(nèi)存數(shù)據(jù)庫。其用法與哲學(xué)數(shù)據(jù)庫完全相同。唯一的區(qū)別是它內(nèi)置在內(nèi)存中,操作效率相當(dāng)高。我在處理大數(shù)據(jù)時(shí)總是這么做。R使用三個(gè)向量來保存他的迭代器。然后將三個(gè)向量按三個(gè)成員進(jìn)行排序,最后進(jìn)行二值搜索。復(fù)雜性日志(n)
新聞標(biāo)題:vector底層實(shí)現(xiàn)C的vector是怎么實(shí)現(xiàn)的?是靠鏈表嗎?-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article46/psghg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站、軟件開發(fā)、靜態(tài)網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容