文章目錄
- 1 map與unordered_map區(qū)別及使用
- 2 set與unordered_set區(qū)別(與map類似):
- 3 vector和list的區(qū)別(隨機(jī)存取、插入刪除)
勐臘網(wǎng)站制作公司哪家好,找
創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、
自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。
創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選
創(chuàng)新互聯(lián)。
1 map與unordered_map區(qū)別及使用
需要引入的頭文件不同:
- map:
#include
- unordered_map:
#include
內(nèi)部實(shí)現(xiàn)機(jī)理不同:
map:
- map內(nèi)部實(shí)現(xiàn)了一個(gè)紅黑樹(shù)(紅黑樹(shù)是非嚴(yán)格平衡二叉搜索樹(shù),而AVL是嚴(yán)格平衡二叉搜索樹(shù))
- 紅黑樹(shù)具有自動(dòng)排序的功能,因此map內(nèi)部的所有元素都是有序的
- map中的元素是按照二叉搜索樹(shù)(又名二叉查找樹(shù)、二叉排序樹(shù),特點(diǎn)就是左子樹(shù)上所有節(jié)點(diǎn)的鍵值都小于根節(jié)點(diǎn)的鍵值,右子樹(shù)所有節(jié)點(diǎn)的鍵值都大于根節(jié)點(diǎn)的鍵值)存儲(chǔ)的,使用中序遍歷可將鍵值按照從小到大遍歷出來(lái)。
unordered_map:
- unordered_map內(nèi)部實(shí)現(xiàn)了一個(gè)哈希表(也叫散列表,通過(guò)把關(guān)鍵碼值映射到Hash表中一個(gè)位置來(lái)訪問(wèn)記錄,查找的時(shí)間復(fù)雜度可達(dá)到
O(1)
,其在海量數(shù)據(jù)處理中有著廣泛應(yīng)用)。 - 因此,其元素的排列順序是無(wú)序的。
優(yōu)缺點(diǎn)以及適用處:
map:
- 優(yōu)點(diǎn):有序性,這是map結(jié)構(gòu)大的優(yōu)點(diǎn),其元素的有序性在很多應(yīng)用中都會(huì)簡(jiǎn)化很多的操作,內(nèi)部實(shí)現(xiàn)一個(gè)紅黑樹(shù)使得map的很多操作在
log(n)
的時(shí)間復(fù)雜度下就可以實(shí)現(xiàn),因此效率非常的高 - 缺點(diǎn): 空間占用率高,因?yàn)閙ap內(nèi)部實(shí)現(xiàn)了紅黑樹(shù),雖然提高了運(yùn)行效率,但是因?yàn)槊恳粋€(gè)節(jié)點(diǎn)都需要額外保存父節(jié)點(diǎn)、孩子節(jié)點(diǎn)和紅/黑性質(zhì),使得每一個(gè)節(jié)點(diǎn)都占用大量的空間
- 適用處:對(duì)于那些有順序要求的問(wèn)題,用map會(huì)更高效一些
unordered_map:
- 優(yōu)點(diǎn): 因?yàn)閮?nèi)部實(shí)現(xiàn)了哈希表,因此其查找速度非常的快
- 缺點(diǎn): 哈希表的建立比較耗費(fèi)時(shí)間
- 適用處:對(duì)于查找問(wèn)題,unordered_map會(huì)更加高效一些,因此遇到查找問(wèn)題,常會(huì)考慮一下用unordered_map
總結(jié):
- 內(nèi)存占有率的問(wèn)題就轉(zhuǎn)化成
紅黑樹(shù) VS hash表
, 還是unordered_map占用的內(nèi)存要高。但是unordered_map執(zhí)行效率要比map高很多 - 對(duì)于unordered_map或unordered_set容器,其遍歷順序與創(chuàng)建該容器時(shí)輸入的順序不一定相同,因?yàn)楸闅v是按照哈希表從前往后依次遍歷的
2 set與unordered_set區(qū)別(與map類似):
- set:基于紅黑樹(shù)實(shí)現(xiàn),紅黑樹(shù)具有自動(dòng)排序的功能,因此set內(nèi)部所有的數(shù)據(jù),在任何時(shí)候,都是有序的。
- unordered_set:
- 基于哈希表,數(shù)據(jù)插入和查找的時(shí)間復(fù)雜度很低,幾乎是常數(shù)時(shí)間,而代價(jià)是消耗比較多的內(nèi)存,無(wú)自動(dòng)排序功能。
- 底層實(shí)現(xiàn)上,使用一個(gè)下標(biāo)范圍比較大的數(shù)組來(lái)存儲(chǔ)元素,形成很多的桶,利用hash函數(shù),來(lái)對(duì)key進(jìn)行映射到不同區(qū)域進(jìn)行保存。
3 vector和list的區(qū)別(隨機(jī)存取、插入刪除)
vector
擁有一段連續(xù)的內(nèi)存空間,因此支持隨機(jī)存取,如果需要高效的隨機(jī)存取,而不在乎插入和刪除的效率,使用vector。list
擁有一段不連續(xù)的內(nèi)存空間,因此不支持隨機(jī)存取,如果需要大量的插入和刪除,而不關(guān)心隨機(jī)存取,則應(yīng)使用list。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站欄目:【C++零散】unordered-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:
http://weahome.cn/article/decsie.html