2019. 6. 20. 08:02ใPROGRAMMING/C++ STL
STL (Standard Template Library)
ํ๋ก๊ทธ๋๋ฐ์ ํ์ํ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์
ํ ํ๋ฆฟํํ์ฌ ์ ๊ณตํ๋ C++ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
(์ปจํ ์ด๋, ๋ฐ๋ณต์, ์๊ณ ๋ฆฌ์ฆ, ํจ์๊ฐ์ฒด 4๊ฐ์ง๋ฅผ ์ ๊ณตํ๋ค.)
[ ์ปจํ ์ด๋ ๋ถ๋ฅ ]
1. ์์ ๋ฐฐ์น ๋ฐฉ์์ ๋ฐ๋ผ
ํ์ค ์ํ์ค ์ปจํ ์ด๋ (์ ํ์ ์ธ ๊ตฌ์กฐ) : vector, list, deque
ํ์ค ์ฐ๊ด ์ปจํ ์ด๋ (๋น์ ํ์ ์ธ ๊ตฌ์กฐ) : map, multimap, set, multiset
2. ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ๋ฐฉ์
๋ฐฐ์ด ๊ธฐ๋ฐ (์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ) : vector, deque
๋ ธ๋ ๊ธฐ๋ฐ (๋น ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ) : list, map , multimap, set, multiset
3. ์ปจํ ์ด๋ ์ด๋ํฐ
๊ธฐ์กด ์ปจํ ์ด๋์ ๊ธฐ๋ฅ์ ์ ํํ๊ฑฐ๋ ์ถ์์ํจ ์ปจํ ์ด๋์ด๋ค.
queue, priority queue, stack
Vector
ํ์ค ์ํ์ค ์ปจํ ์ด๋.
๋์ ๋ฐฐ์ด ๊ธฐ๋ฐ.
์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋๋ค.
์ธ๋ฑ์ค ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. (ํ์์ ์ ๋ฆฌ.)
๋ฐฐ์ด์ด๋ผ๋ ํ์ ๋ ๊ณต๊ฐ์ด๊ธฐ ๋๋ฌธ์ ํฌํ์ํ๊ฐ ์จ๋ค.
ํฌํ์ํ์ผ ๋ ์ฌํ ๋น ๋ฐ ๋ณต์ฌ๊ฐ ์ผ์ด๋๋ค. (๋น๋ฒํ ์ฝ์ ๊ณผ ์ญ์ ์ ๋ถ๋ฆฌ.)
[ Vector์ ์ ์ธ ]
vector ํค๋๋ฅผ ํฌํจ์ํจ ํ,
vector<์๋ฃํ> '๋ณ์ ์ด๋ฆ'์ ํตํด ์ ์ธ.
์๋ฃํ ์์น์๋ ๊ตฌ์กฐ์ฒด๋ ํด๋์ค๋ ์ฌ ์ ์๋ค.
[ vector์ ์์ ์ฝ์ ๋ฐ ์ ๊ฑฐ ]
push_back : ๋ค์์ ๋ถํฐ ์์๋ฅผ ์ฝ์ ํ๋ค.
(vector๋ push_front ํจ์๋ ์ ๊ณตํ์ง ์๋๋ค.)
pop_back : ๊ฐ์ฅ ๋ค์ ์๋ ์์๋ฅผ ํ์ฌ vector์์ ์ ๊ฑฐํ๋ค.
(vector๋ pop_front ํจ์๋ ์ ๊ณตํ์ง ์๋๋ค.)
size : vector๊ฐ ์ ์ฅํ๊ณ ์๋ ํ์ฌ ์์์ ๊ฐ์.
[ vector์ ๋ฉ๋ชจ๋ฆฌ ์์ฝ ]
capacity : ํ์ฌ vector๊ฐ ์ ์ฅํ ์ ์๋ ์ต๋ ์์์ ๊ฐ์. ์ฆ, vector๊ฐ ํ ๋นํ ๋ฐฐ์ด์ ๊ธธ์ด.
์ต์ด vector์ capacity(์ฉ๋)์ 0์ธ ์ํ์ด๋ค.
capacity์ ๋ํ ์ด๊ธฐํ ์์ด ์์๋ฅผ ์ฝ์ ํ ๊ฒฝ์ฐ ๋น๋ฒํ ์ฌํ ๋น๊ณผ ๋ณต์ฌ๊ฐ ์ผ์ด๋๊ฒ ๋๋ค.
๋น๋ฒํ ํฌํ ์ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ capacity ์ด๊ธฐํ๊ฐ ํ์ํ๋ค.
reserve : vector์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ์์ฝํด์ฃผ๋ ํจ์.
reserve ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ฌํ ๋น๊ณผ ๋ณต์ฌ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
(์ด๋ฏธ ์์ฝํ ๊ณต๊ฐ์ ์ค์ผ ์ ์๋ค.
๊ธฐ์กด์ ํฌ๊ธฐ๋ณด๋ค ํฐ ๋ฒ์๋ก ์๋ก ์์ฝ์ ํ๋ฉด ์ฌํ ๋น๊ณผ ๋ณต์ฌ๊ฐ ์ผ์ด๋๋ค.)
[ vector์ ๋ฉค๋ฒ ํจ์๋ค ]
empty : ์ปจํ ์ด๋๊ฐ ๋น์๋์ง ์กฐ์ฌํ๋ ๋ฉค๋ฒ ํจ์. (๋น์์ผ๋ฉด true ๋ฐํ)
front : ๋งจ ์ฒซ๋ฒ์งธ ์์๋ฅผ ์ฝ์ด์ค๋ ํจ์.
back : ๋งจ ๋ง์ง๋ง ์์๋ฅผ ์ฝ์ด์ค๋ ํจ์.
clear : ์ปจํ ์ด๋์ ์ ์ฅ๋ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐ.
shrink_to_fit : ํ์ฌ์ size ์๋งํผ capacity์ ์๋ฅผ ์กฐ์ ํ๋ ํจ์.
swap : ๋ ์ปจํ ์ด๋๊ฐ ๊ฐ์ง ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ตํํ๋ ํจ์.
[ vector์ ๋ฐ๋ณต์ ]
๋ฐ๋ณต์(iterator)
์ปจํ ์ด๋์ ์ ์ฅํ ์์์ ์์น ์ ๋ณด๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์ด๋ค. (ํฌ์ธํฐ๋ฅผ ํ๋ด ๋ธ ๊ฐ์ฒด.)
๊ฐ ์ปจํ ์ด๋๋ง๋ค ์์ ์ ์ฅ๋ฐฉ์ ๋ฐ ์ ๊ทผ ๋ฐฉ์์ด ๋ค๋ฅด๋ค. (๊ฐ ์ปจํ ์ด๋๋ง๋ค ๋ฐ๋ณต์ ์๋ฃํ์ ๊ฐ๊ณ ์์.)
๋ฐ๋ณต์๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ํ์ผํํด๋์๋ค.
(์์ ์ ๊ทผ ๋ฐ๋ณต์, ์๋ฐฉํฅ ๋ฐฉ๋ณต์, ์๋ฐฉํฅ ๋ฐ๋ณต์, ์ ๋ ฅ ๋ฐ๋ณต์, ์ถ๋ ฅ ๋ฐ๋ณต์)
vector์ ๋ฐ๋ณต์ : ์์์ ๊ทผ ๋ฐ๋ณต์.
+, -, +=, -=, [] ๋ฑ์ ์์ ์ ๊ทผ์ ๊ดํ ์ฐ์ฐ์๊ฐ ์ค๋ฒ ๋ก๋ฉ๋์ด์๋ค.
begin ๊ฐ์ฅ ์ฒซ ์์์ ์์น์ ๋ณด(๋ฐ๋ณต์)๋ฅผ ๋ฐํ.
end ๋ง์ง๋ง ์์ ๋ค์ ์์น์ ๋ณด(๋ฐ๋ณต์)๋ฅผ ๋ฐํ.
[ ๋ฐ๋ณต์๋ฅผ ์ด์ฉํ ์์ ์ํ ]
๊ฐ์ ์ฐธ์กฐ ์ฐ์ฐ์๊ฐ ์ค๋ฒ๋ก๋ฉ ๋์ด์๋ค.
[ ์์ ์ ๊ทผ ๋ฐ๋ณต์ ]
์ธ๋ฑ์ค๋ฅผ ํตํ ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
[ ๋ฐ๋ณต์๋ฅผ ์ด์ฉํ ์ค๊ฐ ์ฝ์ ]
๋ฐ๋ณต์๋ฅผ ์ด์ฉํด์ ์ค๊ฐ ์ฝ์ ์ ํ ์ดํ์๋
ํ์ฌ ๋ฐ๋ณต์์ ์์น์ ๋ณด๋ ๋ชจ๋ ๋ฌดํจํ๋๋ฏ๋ก ์๋ก ์ค์ ํด์ค์ผ ํ๋ค.
[ ๋ฐ๋ณต์๋ฅผ ์ด์ฉํ ์ค๊ฐ ์ ๊ฑฐ ]
'PROGRAMMING > C++ STL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ค์ ์ ๋ฆฌํ๋ C++ STL ์๋ฃ๊ตฌ์กฐ array (0) | 2020.08.06 |
---|---|
๋ค์ ์ ๋ฆฌํ๋ C++ STL [ ๊ฐ์ ] (0) | 2020.08.05 |
04. [C++] STL (Standard Template Library) - ์๊ณ ๋ฆฌ์ฆ(algorithm) (0) | 2019.06.26 |
03. [C++] STL (Standard Template Library) - Map (0) | 2019.06.25 |
02. [C++] STL (Standard Template Library) - List (0) | 2019.06.21 |