文章目錄
- 1 map與unordered_map區(qū)別及使用
- 2 set與unordered_set區(qū)別(與map類似):
- 3 vector和list的區(qū)別(隨機(jī)存取、插入刪除)
勐臘網(wǎng)站制作公司哪家好,找
創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、
自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。
創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(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è)紅黑樹(紅黑樹是非嚴(yán)格平衡二叉搜索樹,而AVL是嚴(yán)格平衡二叉搜索樹)
- 紅黑樹具有自動(dòng)排序的功能,因此map內(nèi)部的所有元素都是有序的
- map中的元素是按照二叉搜索樹(又名二叉查找樹、二叉排序樹,特點(diǎn)就是左子樹上所有節(jié)點(diǎn)的鍵值都小于根節(jié)點(diǎn)的鍵值,右子樹所有節(jié)點(diǎn)的鍵值都大于根節(jié)點(diǎn)的鍵值)存儲的,使用中序遍歷可將鍵值按照從小到大遍歷出來。
unordered_map:
- unordered_map內(nèi)部實(shí)現(xiàn)了一個(gè)哈希表(也叫散列表,通過把關(guān)鍵碼值映射到Hash表中一個(gè)位置來訪問記錄,查找的時(shí)間復(fù)雜度可達(dá)到
O(1)
,其在海量數(shù)據(jù)處理中有著廣泛應(yīng)用)。 - 因此,其元素的排列順序是無序的。
優(yōu)缺點(diǎn)以及適用處:
map:
- 優(yōu)點(diǎn):有序性,這是map結(jié)構(gòu)大的優(yōu)點(diǎn),其元素的有序性在很多應(yīng)用中都會簡化很多的操作,內(nèi)部實(shí)現(xiàn)一個(gè)紅黑樹使得map的很多操作在
log(n)
的時(shí)間復(fù)雜度下就可以實(shí)現(xiàn),因此效率非常的高 - 缺點(diǎn): 空間占用率高,因?yàn)閙ap內(nèi)部實(shí)現(xiàn)了紅黑樹,雖然提高了運(yùn)行效率,但是因?yàn)槊恳粋€(gè)節(jié)點(diǎn)都需要額外保存父節(jié)點(diǎn)、孩子節(jié)點(diǎn)和紅/黑性質(zhì),使得每一個(gè)節(jié)點(diǎn)都占用大量的空間
- 適用處:對于那些有順序要求的問題,用map會更高效一些
unordered_map:
- 優(yōu)點(diǎn): 因?yàn)閮?nèi)部實(shí)現(xiàn)了哈希表,因此其查找速度非常的快
- 缺點(diǎn): 哈希表的建立比較耗費(fèi)時(shí)間
- 適用處:對于查找問題,unordered_map會更加高效一些,因此遇到查找問題,常會考慮一下用unordered_map
總結(jié):
- 內(nèi)存占有率的問題就轉(zhuǎn)化成
紅黑樹 VS hash表
, 還是unordered_map占用的內(nèi)存要高。但是unordered_map執(zhí)行效率要比map高很多 - 對于unordered_map或unordered_set容器,其遍歷順序與創(chuàng)建該容器時(shí)輸入的順序不一定相同,因?yàn)楸闅v是按照哈希表從前往后依次遍歷的
2 set與unordered_set區(qū)別(與map類似):
- set:基于紅黑樹實(shí)現(xiàn),紅黑樹具有自動(dòng)排序的功能,因此set內(nèi)部所有的數(shù)據(jù),在任何時(shí)候,都是有序的。
- unordered_set:
- 基于哈希表,數(shù)據(jù)插入和查找的時(shí)間復(fù)雜度很低,幾乎是常數(shù)時(shí)間,而代價(jià)是消耗比較多的內(nèi)存,無自動(dòng)排序功能。
- 底層實(shí)現(xiàn)上,使用一個(gè)下標(biāo)范圍比較大的數(shù)組來存儲元素,形成很多的桶,利用hash函數(shù),來對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級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:【C++零散】unordered-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://jinyejixie.com/article4/decsie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、App開發(fā)、建站公司、服務(wù)器托管、企業(yè)建站、品牌網(wǎng)站制作
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)