C Programming Language/C++

C++ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ STL(Standard Template Library)

567Rabbit 2024. 8. 25. 14:16

 

ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ STL(Standard Template Library)

 

C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค

STL์€ ์ผ๋ฐ˜ํ™”๋œ(Generic) ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ๋กœ ์ปจํ…Œ์ด๋„ˆ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋ฐ˜๋ณต์ž๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

 

- ์ปจํ…Œ์ด๋„ˆ : std::vector, std::list, std::set, std::map ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค.

- ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•จ์ˆ˜๋“ค๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์ •๋ ฌ, ์ˆ˜์ •, ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ

- ์ดํ„ฐ๋ ˆ์ดํ„ฐ : ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋กœ, ์ปจํ…Œ์ด๋„ˆ(๋ฐ์ดํ„ฐ)์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜(ํ–‰์œ„)์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•จ

                     ํฌ์ธํ„ฐ์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ์˜ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฑฐ๋‚˜ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ปจํ…Œ์ด๋„ˆ ๊ณตํ†ต ์—ฐ์‚ฐ๋“ค - vector, list, set, map ๋“ฑ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค

 

 

 

std::vector

 

- ๋™์  ๋ฐฐ์—ด์„ ์บก์Šํ™”ํ•œ ์ˆœ์ฐจ ์ปจํ…Œ์ด๋„ˆ

- ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์š”์†Œ๋“ค์€ ์—ฐ์†ํ•ด์„œ ์ €์žฅ

- ์ €์žฅ๊ณต๊ฐ„์ด ์ž๋™์œผ๋กœ ํ™•์žฅ

- ์ถ”๊ฐ€์ ์ธ ์š”์†Œ๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๋ณด๋‹ค ๋” ํฐ ๊ณต๊ฐ„ ์ฐจ์ง€

- ์ž„์˜ ์ ‘๊ทผ์ด ๋น ๋ฆ„, ์ค‘๊ฐ„ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๋Š๋ฆผ.

 

 

 

 

 

 

 

์ปจํ…Œ์ด๋„ˆ ์„ค๋ช…

 

std::vector

  • ๋น„์œ : ์ผ์ข…์˜ ์‹ ์ถ•์„ฑ์ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ
  • ํŠน์ง•:
    • ๋ฆฌ์ŠคํŠธ์— ์•„์ดํ…œ์„ ๊ณ„์† ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ฝ‰ ์ฐจ๋ฉด ์•Œ์•„์„œ ๋” ํฐ ๋ฆฌ์ŠคํŠธ๋กœ ์˜ฎ๊ฒจ์คŒ
    • ์ฑ…์žฅ์— ์ฑ…๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋‚˜๋ž€ํžˆ ๊ฝ‚ํ˜€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, std::vector์˜ ์š”์†Œ๋“ค๋„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚˜๋ž€ํžˆ ์ •๋ ฌ๋จ
    • ์ค‘๊ฐ„์— ์ฑ…์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ๋นผ๋ ค๋ฉด ๋‚˜๋จธ์ง€ ์ฑ…๋“ค๋„ ์ „๋ถ€ ์›€์ง์—ฌ์•ผ ํ•ด์„œ ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฐ๋‹ค

std::list

  • ๋น„์œ : std::list๋Š” ๊ฐ๊ฐ์˜ ์ฑ…์ด ๋‹ค์Œ ์ฑ…์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ
  • ํŠน์ง•:
    • ์ฑ…๋“ค ์‚ฌ์ด์— ์ง์ ‘์ ์ธ ์—ฐ๊ฒฐ์ด ์žˆ์–ด์„œ, ์ค‘๊ฐ„์— ์ฑ…์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๊ฒŒ ์•„์ฃผ ์‰ฝ๋‹ค
    • ํ•˜์ง€๋งŒ ์–ด๋–ค ์ฑ…์ด ๋ช‡ ๋ฒˆ์งธ ์ฑ…์ธ์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์—†์–ด์„œ ์ˆœ์„œ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ€์•ผ๋งŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

std::set

  • ๋น„์œ : std::set์€ ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋˜๋Š” ์ฑ…์žฅ
  • ํŠน์ง•:
    • ์ฑ…์„ ์ฑ…์žฅ์— ๋„ฃ์œผ๋ฉด ์ž๋™์œผ๋กœ ์ •๋ ฌ์ด ๋˜๋Š”๋ฐ, ๊ฐ™์€ ์ œ๋ชฉ์˜ ์ฑ…์€ ํ•œ ๊ถŒ๋งŒ ํ—ˆ์šฉ๋œ๋‹ค
    • ์ƒˆ ์ฑ…์„ ๋„ฃ๊ฑฐ๋‚˜ ์ฐพ์„ ๋•Œ, ํ•ญ์ƒ ์ •๋ฆฌ๋œ ์ƒํƒœ๋ผ์„œ ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ฑ…์ด ๋ฌด์กฐ๊ฑด ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๋Œ€๋กœ ๋ณด๊ด€ํ•˜๋Š” ๊ฒŒ ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

std::map

  • ๋น„์œ : std::map์€ ์‚ฌ์ „์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š” ์ฑ…์žฅ
  • ํŠน์ง•:
    • ๊ฐ ์ฑ…์— ์ œ๋ชฉ(ํ‚ค)๊ณผ ์„ค๋ช…(๊ฐ’)์„ ๋ถ™์—ฌ์„œ ๋ณด๊ด€
    • ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™ ์ •๋ ฌ๋˜๋ฉฐ, ๊ฐ™์€ ์ œ๋ชฉ์˜ ์ฑ…์€ ํ•œ ๊ถŒ๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
    • ์‚ฌ์ „์—์„œ ๋‹จ์–ด๋ฅผ ์ฐพ์•„๋ณด๋“ฏ์ด ์ œ๋ชฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‰ฝ๊ฒŒ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

... ๋“ฑ ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

 

 


์•Œ๊ณ ๋ฆฌ์ฆ˜

 

- ์ปจํ…Œ์ด๋„ˆ ์š”์†Œ์— ๋™์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์ •์˜๋œ๋‹ค.

- ๊ฒ€์ƒ‰( Search ), ์ •๋ ฌ( Sort ), ์„ธ๊ธฐ( Counting ), ๋ณ€ํ™˜( Transform ) ๋“ฑ

- ๋ฒ”์œ„๋Š” [first, last)๋กœ ์ •์˜๋œ๋‹ค  ex) vecto์˜ begin(), end() ๋ฒ”์œ„ 

 

 

 

 

 

std::iterator (์ดํ„ฐ๋ ˆ์ดํ„ฐ : ๋ฐ˜๋ณต์ž)

- ํฌ์ธํ„ฐ๋ฅผ ์ผ๋ฐ˜ํ™”ํ•œ ๊ฒƒ

- ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ํ•œ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ„

- ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ์š”์†Œ๋“ค์„ ์ˆœํšŒ ํ˜น์€ ๋ฐ˜๋ณตํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

- ์ปจํ…Œ์ด๋„ˆ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• 

- vector, set, list, map ๋“ฑ์˜ ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋œ ๊ฐ ์›์†Œ๋ฅผ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค

- const_iterator(์ƒ์ˆ˜ iterator)๋Š” ์›์†Œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ƒ์ˆ˜๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

- ๋ฐ˜๋ณต์ž ๋ฒ”์ฃผ(์นดํ…Œ๊ณ ๋ฆฌ)

 

 

 

 

 

 

std::string

  • std::string์€ C++ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€๋กœ, ๊ณ ๊ธ‰ ๋ฌธ์ž์—ด ํด๋ž˜์Šค
  • STL์˜ ์ปจํ…Œ์ด๋„ˆ์™€ ์œ ์‚ฌํ•œ ๋™์ž‘์„ ํ•˜์ง€๋งŒ, STL ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ถ„๋ฅ˜๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.
  • ๋™์  ํฌ๊ธฐ ์กฐ์ •, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ํŽธ๋ฆฌํ•œ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ ๋“ฑ์„ ์ง€์›ํ•˜์—ฌ, C ์Šคํƒ€์ผ ๋ฌธ์ž์—ด๋ณด๋‹ค ์‚ฌ์šฉ์ด ํ›จ์”ฌ ๊ฐ„ํŽธ

- std::string์€ ์‹ค์ œ๋กœ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ณ ๊ธ‰ ํด๋ž˜์Šค์ด๋ฉฐ, C ์Šคํƒ€์ผ์˜ ๋ฌธ์ž์—ด(char ๋ฐฐ์—ด)์„ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

-๋ฌธ์ž๋“ค์˜ ์ˆœ์ฐจ์—ด์„ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค

-๋ฌธ์ž์—ด์„ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ˆ˜๋‹จ์„ ์ œ๊ณต

- ๋ฌธ์žํ˜•์‹, ๋ฌธ์ž ํŠน์งˆ(trait), ํ• ๋‹น์ž๋ฅผ ํ…œํ”Œ๋ฆฟ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Œ

 

 

 

- string์ด๋ฏ€๋กœ s๊ฐ€ ๋ถ™๋Š”๋‹ค.

 

 

 

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