Data Structure

[Data Structure] unordered_map μ‚¬μš©λ²•

An effort will never betray 😎 2020. 3. 16. 22:04
λ°˜μ‘ν˜•
  • C++ STL쀑 ν•˜λ‚˜μΈ unordered_map에 λŒ€ν•œ μ„€λͺ…μž…λ‹ˆλ‹€.

unorderd_map

  • map보닀 더 λΉ λ₯Έ 탐색을 ν•˜κΈ° μœ„ν•œ μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.

  • unordered_map은 ν•΄μ‰¬ν…Œμ΄λΈ”λ‘œ κ΅¬ν˜„ν•œ 자료ꡬ쑰둜 탐색 μ‹œκ°„λ³΅μž‘λ„λŠ” O(1)μž…λ‹ˆλ‹€.

  • map은 Binary Search Tree둜 탐색 μ‹œκ°„ λ³΅μž‘λ„λŠ” O(log n)μž…λ‹ˆλ‹€.

  • unordered_map을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” #include< unordered_map > 을 μ„ μ–Έν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • unordered_map은 μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•Šκ³  map에 λΉ„ν•΄ 데이터가 λ§Žμ„ μ‹œ μ›”λ“±νžˆ 쒋은 μ„±λŠ₯을 λ³΄μž…λ‹ˆλ‹€.

  • ν•˜μ§€λ§Œ, keyκ°€ μœ μ‚¬ν•œ 데이터가 λ§Žμ„ μ‹œ ν•΄μ‹œ 좩돌둜 인해 μ„±λŠ₯이 λ–¨μ–΄μ§ˆ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.


ν•¨μˆ˜

empty( )

  • 맡이 λΉ„μ–΄μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” ν•¨μˆ˜
  • if unordered_map is empty, then return 1 else 0

size( )

  • 맡의 크기λ₯Ό ν™•μΈν•˜λŠ” ν•¨μˆ˜
  • return size_type ( unsigned int )

operator [ ]

  • λ§΅μ—μ„œ keyλ₯Ό 톡해 valueλ₯Ό μ§€μ •ν•˜λŠ” operator
  • map_name[key] = value

find( key )

  • λ§΅μ—μ„œ key에 ν•΄λ‹Ήν•˜λŠ” μ›μ†Œλ₯Ό μ°ΎλŠ” ν•¨μˆ˜
  • if key is contained, then iterator else map_name.end()

count( key )

  • λ§΅μ—μ„œ key에 ν•΄λ‹Ήν•˜λŠ” μ›μ†Œμ˜ 갯수λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
  • if key is contained, return 1 else 0

insert( {key, value} )

  • 맡에 pair<key,value> λ₯Ό μΆ”κ°€ν•˜λŠ” ν•¨μˆ˜
  • if key is contained, then not insert

erase( key )

  • λ§΅μ—μ„œ key에 ν•΄λ‹Ήν•˜λŠ” μ›μ†Œλ₯Ό μ œκ±°ν•˜λŠ” ν•¨μˆ˜
  • erase ν•˜λŠ” 방법 : νŠΉμ • position의 pair μ‚­μ œ, keyλ₯Ό 톡해 μ‚­μ œ, λ²”μœ„ μ‚­μ œ

clear( )

  • 맡을 μ΄ˆκΈ°ν™”ν•˜λŠ” ν•¨μˆ˜

operator =

  • λŒ€μž…μ—°μ‚°μž κ°€λŠ₯

탐색방법

  • index둜 μ ‘κ·Όν•  수 μ—†κ³  iterator둜 μ ‘κ·Όν•˜μ—¬μ•Ό ν•œλ‹€.
  • μ‹œμž‘ : begin( ), 끝 : end( )
  • key : iter->first, value : iter->second
  • 반볡문 μ‚¬μš© μ‹œ auto ν™œμš© or pair< key_type, value_type > μ‚¬μš©

μ‹€μŠ΅

κ²°κ³Ό

  • μΆ”κ°€λ‘œ κΆκΈˆν•œ μ μ΄λ‚˜ μˆ˜μ •ν•  λΆ€λΆ„ 있으면 λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš”.
λ°˜μ‘ν˜•