Data Structure
[Data Stucture] map(๋งต) ์ฌ์ฉ๋ฒ
An effort will never betray ๐
2020. 2. 22. 18:58
๋ฐ์ํ
- C++ STL ์ค ํ๋์ธ map์ ๋ํ ์ค๋ช ์ ๋๋ค.
map ์ด๋?
map์ key์ value์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ๋ container ์ ๋๋ค.
map์ key์ compare ํจ์๋ฅผ ํตํด ์ ๋ ฌ๋ฉ๋๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์)
์ ๋๋ฆญ์ผ๋ก ๊ตฌํ๋์ด key์ value๋ ์ด๋ ํ type์ด ์ฌ ์ ์์ต๋๋ค.
map์ binary search tree๋ก ๊ตฌ์ฑ๋์ด ์์ด์ unordered_map์ ๋นํด ํ์์ด ๋๋ฆฝ๋๋ค. (์๊ฐ ๋ณต์ก๋ O(log n))
map์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ์ค๋ณต key๋ฅผ ๊ฐ์ง๊ธฐ ์ํด์๋ multimap์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
#include < map > ์ ์ ์ธํด์ผ map ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ํจ์
empty ( )
- ๋งต์ด ๋น์ด์๋์ง ํ์ธํ๋ ํจ์
- if map is empty, then return 1 else 0
size ( )
- ๋งต์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ ํจ์
- return size_type (unsigned int)
operator [ ]
- ๋งต์์ key๋ฅผ ํตํด value๋ฅผ ์ง์ ํ๋ operator
insert ( {key, value} )
- ๋งต์ pair<key, value>๋ฅผ ์ถ๊ฐํ๋ ํจ์
- if key is contained, then not insert
- insert ํ๋ ๋ฐฉ๋ฒ : pair ์ถ๊ฐ, ํน์ position์ pair ์ถ๊ฐ, ๋ฒ์ ์ถ๊ฐ
erase ( key )
- ๋งต์์ key์ ํด๋นํ๋ ์์๋ฅผ ์ญ์ ํ๋ ํจ์
- erase ํ๋ ๋ฐฉ๋ฒ : ํน์ position์ pair ์ญ์ , key๋ก ๊ฒ์ํ์ฌ ์ญ์ , ๋ฒ์ ์ญ์
swap ( )
- ๋ ๊ฐ์ ๋งต์ ๋ฐ๊พธ๋ ํจ์
clear ( )
- ๋งต์ ์ด๊ธฐํ ํ๋ ํจ์
find ( key )
- ๋งต์์ key์ ํด๋นํ๋ ์์๊ฐ ์๋์ง ์ฐพ๋ ํจ์
- if key is contained, then iterator else map.end()
count ( key )
- ๋งต์์ key์ ํด๋นํ๋ ์์์ ๊ฐฏ์๋ฅผ ๋ฐํํ๋ ํจ์
- if key is contained, then 1 else 0
operator=
- ๋์ ์ฐ์ฐ์ ๊ฐ๋ฅ
ํ์ ๋ฐฉ๋ฒ
- index๋ก ์ ๊ทผํ ์ ์๊ณ iterator๋ฅผ ์ฌ์ฉํด์ ์์ฐจ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค
- ์์ : begin(), ๋ : end()
- key : iter->first, value : iter->second
- ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ auto ํ์ฉ
์ค์ต
๊ฒฐ๊ณผ
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ์ฌํญ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ