STL - unordered_map / unordered_set

rizzΒ·2024λ…„ 1μ›” 28일
0

STL

λͺ©λ‘ 보기
5/6

πŸ“’ unordered_map / unordered_set

πŸ” 듀어가기에 μ•žμ„œ...

πŸ“Œ unordered_mapμ΄λž€?

  • ν‘œμ€€μ΄ μ•„λ‹Œ hash_mapμ—μ„œ unordered_mapμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ, ν‘œμ€€μœΌλ‘œ μ •μ˜ λ˜μ—ˆλ‹€.
  • hash_mapλ³΄λ‹€λŠ” unordered_map μ‚¬μš©μ„ ꢌμž₯ν•œλ‹€. (hash_map은 μ„±λŠ₯이 보μž₯λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έ)
  • μ—°κ΄€ μ»¨ν…Œμ΄λ„ˆ 기반으둜, mapκ³ΌλŠ” λ‹€λ₯΄κ²Œ μ •λ ¬λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ 자료λ₯Ό λ³΄κ΄€ν•œλ‹€.
  • μž…λ ₯받은 자료λ₯Ό ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 ν…Œμ΄λΈ” ν˜•νƒœλ‘œ μ €μž₯ν•œλ‹€.
  • mapκ³Ό λ™μΌν•˜κ²Œ const key, value의 ν˜•νƒœλ‘œ 자료λ₯Ό μ €μž₯ν•œλ‹€.

πŸ“Œ unordered_map의 νŠΉμ§•

  • ν•΄μ‹œ ν…Œμ΄λΈ”λ‘œ κ΅¬ν˜„ν•˜μ—¬ 탐색 μ‹œκ°„ λ³΅μž‘λ„λŠ” O(1)이닀. (좩돌이 μ—†λ‹€λŠ” κ°€μ •ν•˜μ—)
  • μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 각각의 key 값을 ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 κ³ μœ ν•œ index둜 λ³€ν™˜ν•˜μ—¬ buckets[index]에 μ €μž₯ν•˜κ²Œ λ˜λŠ”λ°, index 값이 λ§Žμ„ μ‹œ(ν•΄μ‹œ 좩돌) μ„±λŠ₯이 λ–¨μ–΄μ§€κ²Œ λœλ‹€.

πŸ“Œ unordered_map의 멀버 ν•¨μˆ˜μ™€ μ—°μ‚°μž

πŸ“Œ unordered_setμ΄λž€?

  • ν‘œμ€€μ΄ μ•„λ‹Œ hash_setμ—μ„œ unordered_setμ΄λΌλŠ” μ΄λ¦„μœΌλ‘œ, ν‘œμ€€μœΌλ‘œ μ •μ˜ λ˜μ—ˆλ‹€.
  • hash_setλ³΄λ‹€λŠ” unordered_set μ‚¬μš©μ„ ꢌμž₯ν•œλ‹€. (hash_set은 μ„±λŠ₯이 보μž₯λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έ)
  • μ—°κ΄€ μ»¨ν…Œμ΄λ„ˆ 기반으둜, setκ³ΌλŠ” λ‹€λ₯΄κ²Œ μ •λ ¬λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ 자료λ₯Ό λ³΄κ΄€ν•œλ‹€.
  • μž…λ ₯받은 자료λ₯Ό ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 ν…Œμ΄λΈ” ν˜•νƒœλ‘œ μ €μž₯ν•œλ‹€.
  • setκ³Ό λ™μΌν•˜κ²Œ const key의 ν˜•νƒœλ‘œ 자료λ₯Ό μ €μž₯ν•œλ‹€.

πŸ“Œ unordered_set의 νŠΉμ§•

  • ν•΄μ‹œ ν…Œμ΄λΈ”λ‘œ κ΅¬ν˜„ν•˜μ—¬ 탐색 μ‹œκ°„ λ³΅μž‘λ„λŠ” O(1)이닀. (좩돌이 μ—†λ‹€λŠ” κ°€μ •ν•˜μ—)
  • μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • 각각의 key 값을 ν•΄μ‹œ ν•¨μˆ˜λ₯Ό 톡해 κ³ μœ ν•œ index둜 λ³€ν™˜ν•˜μ—¬ buckets[index]에 μ €μž₯ν•˜κ²Œ λ˜λŠ”λ°, index 값이 λ§Žμ„ μ‹œ(ν•΄μ‹œ 좩돌) μ„±λŠ₯이 λ–¨μ–΄μ§€κ²Œ λœλ‹€.

πŸ“Œ unordered_set 멀버 ν•¨μˆ˜μ™€ μ—°μ‚°μž

β›³ 마치며...

  • unordered_mapκ³Ό unordered_set은 λͺ¨λ‘ ν•΄μ‹œ ν…Œμ΄λΈ”λ‘œ κ΅¬ν˜„λ˜μ–΄ 있기 λ•Œλ¬Έμ— νŠΉμ§•μ΄ μœ μ‚¬ν•˜λ‹€.
  • κ·ΈλŸ¬λ‚˜ unordered_map은 데이터λ₯Ό key와 value 쌍으둜 이루어 μ €μž₯ν•˜κ³ , unordered_set은 key κ°’ μžμ²΄κ°€ ν•˜λ‚˜μ˜ 데이터이닀.
profile
λ³΅μŠ΅ν•˜κΈ° μœ„ν•΄ μ“°λŠ” κΈ€

0개의 λŒ“κΈ€