C++ STL - map

less than 1 minute read

map container?

  • ๋…ธ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ด์ง„ํŠธ๋ฆฌ๊ตฌ์กฐ
  • key ์™€ value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ pair ๊ฐ์ฒด๋กœ ์ €์žฅ๋œ๋‹ค. first = key, second = value
  • key๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์œผ๋กœ ์ค‘๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์‚ฝ์ž…์ด ๋˜๋ฉด์„œ ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ default ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋น„๊ตํ•จ์ˆ˜์— โ€œgreaterโ€ ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ex) map<int, int, greater> m

map ์‚ฌ์šฉ๋ฒ•

<map> ํ—ค๋”ํŒŒ์ผ์„ ํฌํ•จํ•œ๋‹ค.

๊ธฐ๋ณธ ํ˜•ํƒœ

map<type-key, type-value> name;
  • map ์— ์‚ฝ์ž…์„ ์œ„ํ•œ insert ํ•จ์ˆ˜๋Š” pair ๊ฐ์ฒด๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„์•ผํ•œ๋‹ค.
m1.insert(pair<int, int>(10,20));
m2.insert(pair<string, int>("Bokyoung", 26));
  • ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ์ ‘๊ทผ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค ๋Œ€์‹  key๋ฅผ ์ด์šฉํ•˜์—ฌ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
map<string, int> m;
m["Bokyoung"] = 26;

๋ฉค๋ฒ„ํ•จ์ˆ˜

m.begin();
m.end();
m.empty();
m.insert(pair<type1, type2>);
m.insert(iter, pair<type1, type2>);
m.erase(start, end);
m.size();
m.find(key); // ํ•ด๋‹น ์š”์†Œ๋ฅผ ์ฐพ์œผ๋ฉด ํ•ด๋‹น ์š”์†Œ์— ๋Œ€ํ•œ iterator ๋ฐ˜ํ™˜. ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด m.end() ๋ฐ˜ํ™˜

๋ฒ”์œ„ ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต๋ฌธ

  • ๊ธฐ์กด์˜ for ๋ฐ˜๋ณต๋ฌธ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์‹œ์ž‘๊ณผ ๋์ ์ด ์—†์–ด๋„ ์•Œ์•„์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ
  • ๋ฐฐ์—ด, vector์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฆฌ์ŠคํŠธ ์•ž์— โ€œ:โ€(์ฝœ๋ก )์„ ๋ฐ˜๋“œ์‹œ ๋ถ™์—ฌ์ค˜์•ผํ•œ๋‹ค.
map<int,int> m;
for(auto iter:m)
{
    cout << iter.first << iter.second;
}
  • ๋ณ€์ˆ˜ iter์—๋Š” ๋ฐ์ดํ„ฐ๋ฆฌ์ŠคํŠธ(์ด๋ฒˆ ๊ฒฝ์šฐ๋Š” map)์˜ ์›์†Œ๊ฐ€ ๋ณต์‚ฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ง์ ‘์ ์ธ ๊ฐ’์˜ ๋ณ€๊ฒฝ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

Categories:

Updated:

Leave a comment