STL(Standard Template Library, ํ์ค ํ ํ๋ฆฟ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ชจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
STL ์ค์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปจํ ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ปจํ ์ด๋๋ int๋ float ๋ฑ์ ๊ธฐ๋ณธ ์๋ฃํ์ด๋ struct, class๊ฐ์ ์ ์ ์ ์ ์๋ฃํ์ ๋ด๋๋ค.
์ข ๋ฅ๋ก๋ list, vector, deque, map, set ๋ฑ์ด ์๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ๋จผ์ ์ด๋ค ๊ธฐ๋ฅ์ด ์์ด์ผ ํ๋๊ฐ๋ฅผ ๊ณ ๋ คํ์ฌ ํด๋์ค๋ฅผ ์์ฑํ๋ค.
ํด๋์ค๋ ๋ฉค๋ฒ ๋ณ์์ ๋ฉค๋ฒ ํจ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ด ๋ ํ ํ๋ฆฟ์ ์ด์ฉํ๋ฉด ์ด์นญํ๋ ํ์ ์ ์ฌ์ฉํ๋ ํด๋์ค์ ํจ์๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ,
ํ์ ์ ์ ์ฝ์ ๋ฐ์ง ์๋ ๋ก์ง์ ๊ธฐ์ ํ ์ ์๋ค.
Generic Programming์ ์ํด์๋ ๊ผญ ํ์ํ๋ค.
1. ํ ํ๋ฆฟ(Template)
1) ํจ์ ํ ํ๋ฆฟ
int, float, double ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ ๋ํด ๊ฐ์ ํจ์๋ช ์ผ๋ก ์ ์ธํ์ฌ ์คํ๋ ์ ์์
(๋ฐ์ดํฐ ํ์ ์ ๊ตฌ์ ๋ฐ์ง ์์)
template <typename type> function - declarator์ ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์
์์ ํจ์๋ฅผ ์ข ๋ ๊ฐ์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
Max ๊ฐ์ ๊ตฌํ๋ ํจ์์์๋ ๋น๊ต๋์์ ๊ฐ์ด ๋ฐ๋์ง๋ ์๊ธฐ ๋๋ฌธ์ const๋ก ๋ถ๋ฌ์ค๊ณ ,
์ฒ๋ฆฌํ๋ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ์ฌ ์ฃผ์๋ฅผ ์ฐธ์กฐ(referencing)ํ์ฌ ๊ฐ์ ธ์จ๋ค.
์๋์ ๊ฐ์ด ํจ์ ํ ํ๋ฆฟ์ ํ๋ผ๋ฏธํฐ๋ก ๊ผญ typename๋ง์ด ์๋ ๊ฐ์ ์ฌ์ฉํ ์๋ ์๋ค.
2) ํด๋์ค ํ ํ๋ฆฟ
โป ์คํ: ์๋ฃ ๊ตฌ์กฐ ์ค์ ํ๋๋ก ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ ๊ฒ์ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด๋ LIFO(Last In First Out) ํ์์ผ๋ก ๋์ด ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋๋ push, ๋นผ๋ผ ๋๋ pop์ด๋ผ๋ ์ด๋ฆ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
http://linuxspot.tistory.com/47
vector::vector
vector::assign - ์ ์ฅ๋ ๊ฐ๋ค์ ์๋ก์ด ๊ฐ ๋์
vector::at - n๋ฒ์งธ์ ์์๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋์ ํ ๋ ์ฌ์ฉ
vector::back - ๋ง์ง๋ง ์์์ ๊ฐ์ ๋ฐํํ๊ฑฐ๋ ๋์
vector::begin - ์ฒซ๋ฒ์งธ ์์์ ๋ํ ๋ฐ๋ณต์(iterator) ๋ฐํ
vector::capacity
vector::clear - ๊ฐ ์ญ์ . ์ต์ข ์ ์ผ๋ก size๋ 0์ด ๋๋ค.
vector::empty - ๋ฒกํฐ๊ฐ ๋น์ด์๋์ง ์ฌ๋ถ ๊ฒ์ฌ. if(size() == 0)๋ณด๋ค ์๋๋ฉด์์ ์ด๋.
vector::end - ๋ง์ง๋ง ์์์ ๋ค์ ์์์ ๋ํ ๋ฐ๋ณต์ ๋ฐํ
vector::erase - ํ๋ ๋๋ ํน์ ๋ฒ์์ ๊ฐ ์ญ์ . ์ญ์ ๋ ์์์ ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ณต์ ๋ฐํ.
vector::front - ์ฒซ๋ฒ์งธ ์์์ ๋ ํผ๋ฐ์ค ๋ฐํ
vector::get_allocator
vector::insert - ์๋ก์ด ์์ ์ฝ์ . ์ง์ ํ ์์น์ ์์ชฝ์ ์ฝ์ ๋๋ค.
vector::max_size
vector::operator=
vector::operator[] - ์ฒจ์์ ํด๋นํ๋ ์์์ ๋ ํผ๋ฐ์ค ๋ฐํ. ์ฒจ์๋ 0๋ถํฐ ์์.
vector::pop_back - ๋ฒกํฐ์ ๋ง์ง๋ง ์์ ์ญ์
vector::push_back - ๋ฒกํฐ์ ๋ง์ง๋ง์ ์๋ก์ด ์์ ์ถ๊ฐ
vector::rbegin - ๋ง์ง๋ง ์์๋ฅผ ๊ฐ๋ฆฌํค๋ reverse ๋ฐ๋ณต์ ๋ฐํ
vector::rend - ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ reverse ๋ฐ๋ณต์ ๋ฐํ
vector::reserve - automatic reallocations์ ๋ฐฉ์งํ๊ธฐ ์ํด reserve๋ก ์ ์ฅ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ํ๋ณดํ๋ ์ฉ๋๋ก ์ฌ์ฉ
vector::resize - ๋ฒกํฐ์ ์ฌ์ด์ฆ ๋ณ๊ฒฝ
vector::size - ๋ฒกํฐ์ ์ ์ฅ๋ ์์์ ๊ฐ์ ๋ฐํ
vector::swap - ๋ ๋ฒกํฐ์ ์์๋ฅผ ๊ตํ. ๊ฐ์ ๋ฐ์ดํฐํ์ ์ผ๋๋ง ์ฑ๋ฆฝ
โป STL string class: http://pages.cs.wisc.edu/~cs368-2/CppTutorial/NOTES/STRING.html
'ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[tbd] ๋ณํํ๋ ฌ Transformation Matrix (0) | 2015.03.23 |
---|---|
๋ฆฌ๋ ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก ์ถ๊ฐ Linux library path setting (0) | 2015.03.20 |
๋ฆฌ๋ ์ค ๋ช ๋ น์ด Linux Commands (0) | 2015.03.16 |
์ ํ๋ฐฉ์ ์์ ๋ฐ๋ณตํด๋ฒ Iterative Methods for Solving Linear Systems (1) | 2015.03.11 |
int main ( int argc, char ** argv ) (0) | 2015.03.09 |