๐Ÿ“ Coding Test Study/C++

[C++][hash_map] map๊ณผ unordered_map์˜ ์ฐจ์ด?

ibelieveinme 2021. 7. 19. 01:07
728x90

<map๊ณผ unordered_map์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ผ๊นŒ?>

=> map๊ณผ unordered_map์˜ ์ฐจ์ด๋Š” ๊ตฌํ˜„๋ฐฉ์‹์ด๋‹ค.

map์€ ๊ท ํ˜• ์ด์ง„ํŠธ๋ฆฌ(Red-black tree)๋กœ ๊ตฌํ˜„๋˜๊ณ , unordered_map(hash_map)์€ hash ๋ฐฉ์‹(hash table)์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค.

์ฆ‰,  map์— ๋“ค์–ด๊ฐ€๋Š” element ๋“ค์€ key์— ๋”ฐ๋ผ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๊ณ , unordered_map์€ key์˜ hash๊ฐ’์— ๋”ฐ๋ผ์„œ ์ €์žฅ๋œ๋‹ค.

 

<map๊ณผ unorderd_map ์ค‘์— ์„ฑ๋Šฅ์€ ๋ญ๊ฐ€ ์ข‹์„๊นŒ?>

=> ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์€ ๊ฒฝ์šฐ๋Š” map > unordered_map, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ๋Š” map < unordered_map ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค.

map์˜ ๋ฐ์ดํ„ฐ๋“ค์€ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๋ฏ€๋กœ O(logN)์˜ ํƒ์ƒ‰ ์†๋„๋ฅผ ๋ณด์žฅํ•˜๊ณ , key๊ฐ’์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” unordered_map์˜ ๊ฒฝ์šฐ O(1)์˜ ํƒ์ƒ‰์†๋„๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฐธ๊ณ ๋กœ map์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ ์‹œ ๋น„์šฉ์ด ์ปค์ง„๋‹ค.(๊ทธ๋ž˜๋„ O(logN)์˜ ์„ฑ๋Šฅ์€ ๋ณด์žฅ๋œ๋‹ค.) ๋ฐ์ดํ„ฐ๊ฐ€ ์ ๋”๋ผ๋„ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋Š” unordered_map์˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค๋Š” ๋ง์ด๋‹ค. unordered_map์€ ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์‚ญ์ œ ์‹œ์—๋„ ๊ทธ ์„ฑ๋Šฅ์ด ๊พธ์ค€ํžˆ ๋ณด์žฅ๋œ๋‹ค.


โ˜… ์ฐธ๊ณ ๋กœ hash_map์€ ๋น„ํ‘œ์ค€ Container์ด๊ณ , unordered_map์ด C++11์—์„œ STL ํ‘œ์ค€ Container๋กœ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

์ฆ‰, unordered_map์ด hash_map๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

์•„๋ž˜ microsoft C++ ๊ณต์‹๋ฌธ์„œ ์ฐธ์กฐ~! 

 

unordered_map ํด๋ž˜์Šค

`unordered_map`๋‹ค์–‘ ํ•œ ๊ธธ์ด์˜ ์š”์†Œ ์‹œํ€€์Šค๋ฅผ ์ œ์–ด ํ•˜๋Š” c + + ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปจํ…Œ์ด๋„ˆ ํด๋ž˜์Šค์— ๋Œ€ ํ•œ API ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค.

docs.microsoft.com

 

728x90