日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL之七:STL各种容器的使用时机详解

發(fā)布時(shí)間:2025/6/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL之七:STL各种容器的使用时机详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ??C++標(biāo)準(zhǔn)程序庫提供了各具特長的不同容器。現(xiàn)在的問題是:該如何選擇最佳的容器類別?下表給出了概述。


但是其中有些描述可能不一定實(shí)際。例如:如果你需呀處理的元素?cái)?shù)量很少,可以虎落復(fù)雜度,因?yàn)榫€性算法通常對(duì)元素本身的處理過程比較快,這種情況下,“顯性復(fù)雜度搭配快速的元素處理”要比“對(duì)數(shù)復(fù)雜度搭配慢的元素處理”來得劃算。

? ? 作為對(duì)上表的補(bǔ)充,使用時(shí):

? ? 1.缺省情況下應(yīng)該使用vector。vector的內(nèi)部結(jié)構(gòu)最簡單,并允許隨機(jī)存取,所以數(shù)據(jù)的存取十分方便靈活,數(shù)據(jù)的處理也夠快。

? ? 2.如果經(jīng)常要在序列頭部和尾部安插和移除元素,應(yīng)該采用deque。如果你希望元素被移除時(shí),容器能夠自動(dòng)縮減內(nèi)存,那么你也應(yīng)該采用deque。此外,由于vector通常才有用一個(gè)內(nèi)存區(qū)塊來存放元素,而deque采用多個(gè)區(qū)塊,所以后者可內(nèi)含更多元素。

? ?3.如果需要經(jīng)常在容器的中段執(zhí)行元素的安插、移除和移動(dòng),可考慮使用list。list提供特殊的成員函數(shù),可以在常數(shù)時(shí)間內(nèi)將元素從A容器轉(zhuǎn)移到B容器。但由于list不支持隨機(jī)存取,所以如果只要知道list的頭部卻要造訪list中的元素,性能會(huì)大打折扣。

? ? ?和所有“以節(jié)點(diǎn)為基礎(chǔ)”的容器相似,只要元素還是容器的已不復(fù),list就不會(huì)令指向那些元素的迭代器失效。vector則不然,一旦超過其容量,它的所有iterators,pointers.references都會(huì)失效;執(zhí)行安插或移除操作時(shí),也會(huì)令一部分iterators、pointers、references失效。至于deque,當(dāng)它的大小改變,所有iterators,pointers,references都會(huì)失效。

? ? 4.如果你要的容器是這種性質(zhì):每次操作若不成功,便無效用,那么你應(yīng)該選用list,或是采用關(guān)聯(lián)式容器。

? ? 5.如果你經(jīng)常需要根據(jù)某個(gè)準(zhǔn)則來搜尋元素,那么應(yīng)當(dāng)使用“以該排序準(zhǔn)則對(duì)元素進(jìn)行排序”的set或multiset。記住,理論上,面對(duì)1000個(gè)元素的排序,對(duì)數(shù)復(fù)雜度比線性復(fù)雜度好10倍。就搜尋速度而言,hash table通常比二叉樹還要快5-10倍。但是hash table的元素并未排序,所以如果元素必須排序,它就用不上了。

? ? 6.如果想處理key/value pair,請(qǐng)采用map或multimap。

? ? 7.如果需要關(guān)聯(lián)式數(shù)組,應(yīng)采用map。

? ? 8.如果需要字典結(jié)構(gòu),應(yīng)采用multimap。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的STL之七:STL各种容器的使用时机详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。