ํ์ค ํ ํ๋ฆฟ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 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๊ฐ ๋ถ๋๋ค.
๋ฉค๋ฒ ํจ์