03. [C++] STL (Standard Template Library) - Map

2019. 6. 25. 03:43ใ†PROGRAMMING/C++ STL

 

Map

 

ํ‘œ์ค€ ์—ฐ๊ด€ ์ปจํ…Œ์ด๋„ˆ. (๋น„ ์„ ํ˜•์ ).

์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ (๋ ˆ๋“œ - ๋ธ”๋ž™ ํŠธ๋ฆฌ) ๊ธฐ๋ฐ˜์ด๋‹ค.

๋…ธ๋“œ ๊ธฐ๋ฐ˜. (๋น„ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ.)

 

์›์†Œ ํ•˜๋‚˜๊ฐ€ Key์™€ Value ํ•œ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

(์ค‘๋ณต Key๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.)

 

์‚ฝ์ž…, ์‚ญ์ œ ์‹œ Key ๊ธฐ์ค€์œผ๋กœ ๋งค๋ฒˆ ์ •๋ ฌ์ด ์ผ์–ด๋‚œ๋‹ค.

(๋นˆ๋ฒˆํ•œ ์‚ฝ์ž…, ์‚ญ์ œ ๋ถˆ๋ฆฌ.)

 

Key๊ฐ’์„ ํ†ตํ•ด์„œ [] ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์ด๋‹ค.

(ํƒ์ƒ‰ ์œ ๋ฆฌ.)

 

 

 

 

[ Map์˜ ์„ ์–ธ ]

 

map<Key, Value>๋กœ ์„ ์–ธ ํ•œ๋‹ค.

Key์™€ Value์—๋Š” ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์˜ฌ ์ˆ˜ ๋„ ์žˆ๋‹ค.

 

 

 

 

 

[ Map์˜ ์›์†Œ ์‚ฝ์ž… ]

(1) pair ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์šฉํ•œ Map ์›์†Œ ์‚ฝ์ž….

map์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์ „์— pair๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.
์ฆ‰, map์˜ ์›์†Œ๋Š” pair๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค.

 

first - Key

second - Value

 

๊ธฐ๋ณธ ์ƒ์„ฑ์‹œ์—๋Š” key์™€ value๋Š” ์ž๋™ 0์ดˆ๊ธฐํ™” ๋œ๋‹ค.

pair๊ฐ์ฒด๋ฅผ insertํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ธด๋‹ค. (๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚จ.)

 

์ธ์ž์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด์„œ pair ๊ตฌ์กฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

(2) ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ์‚ฝ์ž….

 

 

 

(3) make_pair: ์ธ์ž ํƒ€์ž…์— ๋”ฐ๋ฅธ pair๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜.

 

 

 

(4) value_type

map์˜ ์›์†Œ์™€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ pair์ž๋ฃŒํ˜•. (map ๋‚ด๋ถ€์— typedef)

value_type์˜ key๋Š” const ์„ฑํ–ฅ์„ ๊ฐ–๋Š”๋‹ค. map์˜ ์›์†Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

(์ดˆ๊ธฐํ™”ํ•œ ์ดํ›„์—๋Š” ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ.)

 

 

 

 

 

 

 

[ Map์˜ ์›์†Œ ์ˆœํšŒ ]

 

key ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ. (const)

value๋Š” ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅ ํ•˜๋‹ค.

 

 

 

 

 

[ Map์˜ ์›์†Œ ์ œ๊ฑฐ ]

 

key ๊ฐ’์„ ํ†ตํ•ด์„œ ์ œ๊ฑฐ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 

 

 

[ ์ค‘๋ณต Key๊ฐ’ ํ—ˆ์šฉ X ]

 

 

 

 

 

[ map์˜ [] ์ ‘๊ทผ ]

Key๊ฐ’์„ ํ†ตํ•ด์„œ [] ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.)

key๋ฅผ ํ†ตํ•œ []์ ‘๊ทผ์‹œ value์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

์กด์žฌํ•˜์ง€ ์•Š๋Š” key๋กœ []์ ‘๊ทผ์‹œ ์ƒˆ๋กœ์šด ์›์†Œ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. value๋Š” 0์ดˆ๊ธฐํ™”.

์ฆ‰, []์—ฐ์‚ฐ์„ ํ†ตํ•œ ์›์†Œ ์‚ฝ์ž…๋„ ๊ฐ€๋Šฅํ•˜๋‹ค!

 

 

 

 

 

[ map์˜ ๋ฐ˜๋ณต์ž ]

map์€ ๋…ธ๋“œ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ์จ '์ž„์˜์ ‘๊ทผ ๋ฐ˜๋ณต์ž'๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

map์€ '์–‘๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž'๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์˜ค๋กœ์ง€ ์ˆœ์ฐจ์ ‘๊ทผ.

 

 

 

 

[ map์˜ ํƒ์ƒ‰ ]

find : key๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํƒ์ƒ‰. 

key์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜.

 

 

key๊ฐ€ char*์ธ ๊ฒฝ์šฐ,

๋ฌธ์ž์—ด ์ƒ์ˆ˜์˜ ์ฃผ์†Œ๋Š” ๊ฐ™๋‹ค. ๊ณ ๋กœ ํƒ์ƒ‰์ด ์ด๋ฃจ์–ด์ง„๋‹ค.