SlideShare a Scribd company logo
1 of 13
Download to read offline
STL in C++
STL = Standard Template Library
Template
์ž๋ฃŒํ˜•์€ ๋‹ค๋ฅด์ง€๋งŒ ๋‚ด๋ถ€ ์ž‘๋™์€ ๋น„์Šทํ•œ ํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜๋“ค์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ
int min( int a, int b )
{
return ( a < b ) ? a : b;
}
๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ,
์ž๋ฃŒํ˜•์ด float์ธ ๋‘ ๋ณ€์ˆ˜ ์ค‘์—์„œ ์ž‘์€ ๊ฐ’์„ ์–ป์œผ๋ ค๋ฉด
float min( float a, float b )
{
return ( a < b ) ? a : b;
}
floatํ˜•์„ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•ด์•ผ ํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋‘ ํ•จ์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ์ œ์™ธํ•˜๋ฉด ๋˜‘๊ฐ™์€ ํ•จ์ˆ˜์ด๋‹ค.
์ด๋Ÿด ๋•Œ ์ž‘์—…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ
template <class T>
T min ( T a, T b )
{
return ( a < b ) ? a : b;
}
์—ฌ๊ธฐ์„œ template๋ผ๋Š” ๊ฒƒ์€ ์ด ํ•จ์ˆ˜๊ฐ€ template ํ•จ์ˆ˜๋ผ๋Š”
๋œป์ด๊ณ , <class T>๋Š” T๋ผ๋Š” ์ž๋ฃŒํ˜•์„ ์ด ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๊ฒ 
๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ์˜ T๋Š” a์™€ b์˜ ์ž๋ฃŒํ˜•์ด ๋ฌด์—‡์ธ์ง€ ์ง€๊ธˆ์€ ์•Œ ์ˆ˜ ์—†
์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ a์™€ b์˜ ์ž๋ฃŒํ˜•์„ T๋ผ๊ณ  ํ•˜๊ฒ ๋‹ค๋Š”
๋œป์ด๋‹ค.
๊ทธ๋ž˜์„œ min(a, b)ํ•˜๋ฉด a, b์˜ ์ž๋ฃŒํ˜•์— ์ƒ๊ด€์—†์ด ๋” ์ž‘์€
๊ฐ’์ด ๋ฆฌํ„ด๋œ๋‹ค.
์•ž์—์„œ ๋ณธ ๊ฒƒ์€ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํด๋ž˜์Šค์—๋„ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ๋ฅผ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค.
template <class T>
class A
{
T m_t;
public:
A(T t): m_t(t) {}
void f(T t);
};
์œ„์˜ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜์™€ ๊ฑฐ์˜ ๋™์ผํ•œ
๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜์—์„œ๋Š” <class T>๋กœ
์ •์˜ํ•œ ์ž๋ฃŒํ˜•์„ ์ž๋™์ ์œผ๋กœ ์ธ์‹ํ•œ ๋ฐ˜๋ฉด์— ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋Š”
ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋ฃŒํ˜•์„ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•˜๋Š”
์ฐจ์ด์ ์ด ์žˆ๋‹ค.
A<int> a(10);
์˜ˆ์‹œ์™€ ๊ฐ™์ธ ์ž๋ฃŒํ˜•์„ int๋กœ ์„ ์–ธํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” class A๋Š”
๋‹ค์Œ๊ณผ ๋™์ผํ•˜๋‹ค.
class A
{
int m_t;
public:
A(int t): m_t(t) {}
void f(int t);
};
์ด๋•Œ < > ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์€ int๋‚˜ float์™€ ๊ฐ™์€
๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์€ ๋ฌผ๋ก ์ด๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒˆ๋กœ ์ •์˜ํ•œ ํด๋ž˜์Šค
๋‚˜ ํฌ์ธํ„ฐํ˜•๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
์•ž์˜ ์˜ˆ์ œ๋ฅผ ์‘์šฉํ•ด์„œ ์ข€ ๋” ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
template <class A, class B, int MAX>
class TwoArray
{
// blah blah
A arr1[MAX];
B arr2[MAX];
// blah blah
};
์œ„์™€ ๊ฐ™์ด < > ์•ˆ์— ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์•ž์˜ TwoArray๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ
์„ฑํ•˜๋ฉด
TwoArray<int, char, 10> a;
class A์—๋Š” int๊ฐ€, class B์—๋Š” char๊ฐ€, int MAX์—๋Š” 10
์ด๋ผ๋Š” ๊ฐ’์ด ํ• ๋‹น๋˜์–ด์„œ
a๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์—๋Š”
Int arr1[10]
char arr2[10]
๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
์‹ ๊ธฐํ•œ ๊ธฐ๋Šฅ์ธ๋งŒํผ ํ…œํ”Œ๋ฆฟ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋‹ค.
1. <class T> ๋Œ€์‹ ์— <typename T>๋ฅผ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. ๋‘˜์€ ๋™์ผํ•˜๋‹ค.
2. Template์€ ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผํ•  ๋•Œ ๋งŒ๋“ค์–ด์ง„๋‹ค.
๊ทธ๋ž˜์„œ ์•„์ฃผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. (ํ•˜์ง€๋งŒ ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€๋Š” ์•Š๋‹ค.)
3. ์ค‘์š”ํ•œ ๊ฒƒ์€ template function์€ ํ•ญ์ƒ ํ—ค๋” ํŒŒ์ผ์— ๋†“์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ ์ด์œ ๋Š” template function์€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ template function์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ํ•จ์ˆ˜ ์—ญ์‹œ ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋˜
์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
STL
์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์•ž์—์„œ ์‚ดํŽด๋ณธ template ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ
์ข…๋ฅ˜์—๋Š” STL Containers, Iterators, Algorithms, Allocators, Function Object๊ฐ€ ์žˆ๋‹ค.
STL Containers
์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.
์‚ฌ์šฉ๋ฒ•๋“ค์ด ๋น„์Šทํ•˜๋‹ˆ linked list๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž.
// ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ๋œ๋‹ค
#include <list>
// ํ•˜๋‚˜ ์ƒ์„ฑํ•˜์ž
// template์—์„œ ๋ณธ ๋ฌธ๋ฒ•์ด ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.
// ์ƒ์„ฑํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ < > ์•ˆ์— ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
std::list<int> intList;
// ๋ฆฌ์ŠคํŠธ์— element๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์ž
// ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•œ push_back()์€ ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ
intList.push_back(5);
// ๊ทธ๋Ÿผ ์ด์ œ ์ถ”๊ฐ€๋œ ๊ฐ’๋“ค ์ค‘์— 5๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ง€์›Œ๋ณด์ž
intList.remove(5);
๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
assign // ๊ธฐ์กด์— ์žˆ๋˜ elements๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด elements๋กœ ๋Œ€์ฒด
list::clear // ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  elements ๊ด‘์—ญ ์‚ญ์ œ
empty // ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
max_size // ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ ๋ฐ˜ํ™˜
get_allocator // ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ allocator๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ฐ˜ํ™˜
resize // ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ฅผ ์ƒˆ๋กœ ์ง€์ •
(๋” ๊ธธ์–ด์ง€๋ฉด ๊ธธ์–ด์ง„ ์ž๋ฆฌ๋Š” ๊ธฐ๋ณธ๊ฐ’๋“ค๋กœ ์ฑ„์›Œ์ง€๊ณ , ๋” ์งง์•„์ง€๋ฉด ์งง์•„์ง„ ๊ธธ์ด๋ณด๋‹ค ๋’ค์— ์žˆ๋˜ elements๋Š” ์ง€์›Œ์ง)
reverse // ๋ฆฌ์ŠคํŠธ์˜ elements์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š”๋‹ค
size // ์ง€๊ธˆ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ ๋ฐ˜ํ™˜
sort // ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ elements๋ฅผ ์ •๋ ฌ
splice // ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œํ•œ element๋ฅผ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…
swap // ๋‘ ๋ฆฌ์ŠคํŠธ์˜ elements๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค
unique // ๋ฆฌ์ŠคํŠธ์—์„œ ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๊ฑฐ๋‚˜ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ์ง€๋Š” elements๋ฅผ ์‚ญ์ œ
merge // ์ง€์ •๋œ ๋ฆฌ์ŠคํŠธ์˜ elements๋ฅผ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ ์ •๋ ฌ
front // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ reference ๋ฅผ ๋ฐ˜ํ™˜
back // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ reference ๋ฅผ ๋ฐ˜ํ™˜
begin // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜
list::cbegin // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜
end // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜
list::cend // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜
rbegin // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜
list::crbegin // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜
rend // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜
list::crend // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜
๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
list::emplace // ํŠน์ •ํ•œ ์œ„์น˜์— element ์‚ฝ์ž…
list::emplace_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— elements ์ถ”๊ฐ€
list::emplace_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— elements ์ถ”๊ฐ€
insert // ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ •ํ•œ ์œ„์น˜์— ํ•˜๋‚˜ ํ˜น์€ ๋‹ค์ˆ˜์˜ element๋ฅผ ์‚ฝ์ž…
push_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— element ์ถ”๊ฐ€
push_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— element ์ถ”๊ฐ€
erase // ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ •ํ•œ ์œ„์น˜์— ์žˆ๋Š” element ํ•˜๋‚˜ ํ˜น์€ ๋‹ค์ˆ˜๋ฅผ ์‚ญ์ œ
pop_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค element ์‚ญ์ œ
pop_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž element ์‚ญ์ œ
remove // ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋งŒ์กฑํ•˜๋Š” elements ์‚ญ์ œ
remove_if // ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” elements ์‚ญ์ œ
// operator
= // ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  element๋ฅผ ๋ณต์‚ฌ
๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
vector // ๋™์ ์ธ ๋ฐฐ์—ด๋กœ์จ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค
deque // ์ ‘๊ทผ์‹œ๊ฐ„์€ array, ์ถ”๊ฐ€ ์‚ญ์ œ ์‹œ๊ฐ„์€ linked list์ธ ์ž๋ฃŒ๊ตฌ์กฐ
map // key๋ฅผ ํ†ตํ•ด์„œ value์— ์ ‘๊ทผํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, key์™€ value ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
***๊ด€๋ จ msdn ํŽ˜์ด์ง€
http://msdn.microsoft.com/en-us/library/vstudio/1fe2x6kt(v=vs.100).aspx
์ž์ฃผ ์“ฐ์ด๋Š” STL container
Algorithms
๋ง๊ทธ๋Œ€๋กœ ์•Œ๊ณ ๋ฆฌ๋“ฌ์œผ๋กœ์จ ์ •๋ ฌ, ์ฐพ๊ธฐ, ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ STL container์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๊ฐœ๋ณ„ ์•Œ๊ณ ๋ฆฌ๋“ฌ์„ includeํ•˜์ง€ ์•Š๊ณ  ํ•œ๋ฒˆ์— ์ „์ฒด๋ฅผ includeํ•œ๋‹ค.
// ๋‹ค์Œ๊ณผ ๊ฐ™์ด includeํ•ด์ฃผ๊ณ 
#include <algorithm>
// ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
std::sort(first, last);
์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋œ sort()๋Š” first์—์„œ last๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ,
ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” N = last โ€“ first์ผ ๋•Œ, O(N log N)์ด๋‹ค.
์ฃผ์˜ํ•  ์ ์€ sort()๋Š” stableํ•œ ์•Œ๊ณ ๋ฆฌ๋“ฌ์ด ์•„๋‹ˆ๋ฏ€๋กœ stableํ•œ ์ •๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ์›ํ•œ๋‹ค๋ฉด stable_sort()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
์ด์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ์•Œ๊ณ ๋ฆฌ๋“ฌ์˜ ํŠน์ง•์€ msdn์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
find() // ์„ ํ˜• ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜
replace() // ํŠน์ •ํ•œ ๊ฐ’์„ ๊ฐ–๋Š” element๋ฅผ ์ฐพ์•„์„œ ์ž…๋ ฅํ•œ ๊ฐ’์œผ๋กœ ๊ต์ฒด
reverse() // ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š”๋‹ค
binary_search() // ์›์†Œ๋“ค์ด ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ข€ ๋” ๋นจ๋ฆฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค
***๊ด€๋ จ msdn ํŽ˜์ด์ง€
http://msdn.microsoft.com/en-us/library/vstudio/wh15hsex(v=vs.100).aspx
์ž์ฃผ ์“ฐ์ด๋Š” Algorithms

More Related Content

What's hot

Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5Nam Hyeonuk
ย 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4Nam Hyeonuk
ย 
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žStart IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žPark Jonggun
ย 
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌnoerror
ย 
Haskell study 14
Haskell study 14Haskell study 14
Haskell study 14Nam Hyeonuk
ย 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPJae Woo Woo
ย 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15Nam Hyeonuk
ย 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2Nam Hyeonuk
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)MIN SEOK KOO
ย 
Haskell study 3
Haskell study 3Haskell study 3
Haskell study 3Nam Hyeonuk
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)MIN SEOK KOO
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Park Jonggun
ย 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL studySeo Dong-yu
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””quxn6
ย 
[Commit Again] 1์ฃผ์ฐจ STL study
[Commit Again] 1์ฃผ์ฐจ STL study[Commit Again] 1์ฃผ์ฐจ STL study
[Commit Again] 1์ฃผ์ฐจ STL study๊ฒฝ ์†ก
ย 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10Nam Hyeonuk
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””quxn6
ย 

What's hot (20)

Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
ย 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
ย 
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žStart IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
ย 
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ
05_STL์ปจํ…Œ์ด๋„ˆ์ •๋ฆฌ
ย 
C++ stl
C++ stlC++ stl
C++ stl
ย 
Haskell study 14
Haskell study 14Haskell study 14
Haskell study 14
ย 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAP
ย 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค์˜ ํ”„๋กœํ† ํƒ€์ž…(prototype of class)
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค์˜  ํ”„๋กœํ† ํƒ€์ž…(prototype of class)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค์˜  ํ”„๋กœํ† ํƒ€์ž…(prototype of class)
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค์˜ ํ”„๋กœํ† ํƒ€์ž…(prototype of class)
ย 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15
ย 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
ย 
Haskell study 3
Haskell study 3Haskell study 3
Haskell study 3
ย 
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
ย 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL study
ย 
Mec 56
Mec 56Mec 56
Mec 56
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ 5,6 ์žฅ ์Šคํ„ฐ๋””
ย 
[Commit Again] 1์ฃผ์ฐจ STL study
[Commit Again] 1์ฃผ์ฐจ STL study[Commit Again] 1์ฃผ์ฐจ STL study
[Commit Again] 1์ฃผ์ฐจ STL study
ย 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
์ดํŽ™ํ‹ฐ๋ธŒ C++ ์Šคํ„ฐ๋””
ย 

Similar to STL study (skyLab)

๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4Young Wook Kim
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3Young Wook Kim
ย 
Collection framework
Collection frameworkCollection framework
Collection frameworkssuser34b989
ย 
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉํ•ด๊ฐ•
ย 
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆhylo926
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€quxn6
ย 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6Chris Ohk
ย 
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซ
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ   แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซแ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ   แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซ
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซdaewon jeong
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””quxn6
ย 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 genericEunjoo Im
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304Yong Joon Moon
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตYong Joon Moon
ย 
[Swift] Data Structure - Stack
[Swift] Data Structure - Stack[Swift] Data Structure - Stack
[Swift] Data Structure - StackBill Kim
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4yonsei
ย 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7Chris Ohk
ย 
[Swift] Functions
[Swift] Functions[Swift] Functions
[Swift] FunctionsBill Kim
ย 
Programming java day2
Programming java day2Programming java day2
Programming java day2Jaehoonyam
ย 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
ย 
Light Tutorial Python
Light Tutorial PythonLight Tutorial Python
Light Tutorial PythonKwangyoun Jung
ย 
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„Sang Goo Kwon
ย 

Similar to STL study (skyLab) (20)

๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4๊ฐ•์˜์ž๋ฃŒ4
๊ฐ•์˜์ž๋ฃŒ4
ย 
๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3๊ฐ•์˜์ž๋ฃŒ3
๊ฐ•์˜์ž๋ฃŒ3
ย 
Collection framework
Collection frameworkCollection framework
Collection framework
ย 
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
[์•„๊ฟˆ์‚ฌ] The C++ Programming Language 11์žฅ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
ย 
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
์•ˆ๋“œ๋กœ์ด๋“œ๊ธฐ์ดˆ
ย 
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
์ดํŽ™ํ‹ฐ๋ธŒ C++ ๊ณต๋ถ€
ย 
2014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #62014-15 Intermediate C++ Study #6
2014-15 Intermediate C++ Study #6
ย 
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซ
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ   แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซแ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ   แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซ
แ„‚แ…กแ„‹แ…ฆ แ„Žแ…ฅแ†บแ„‡แ…ฅแ†ซแ„แ…ข แ„Œแ…กแ„‡แ…ก8 แ„…แ…กแ†ทแ„ƒแ…กแ„‰แ…ตแ†จ แ„Œแ…ตแ„‹แ…ขแ†ซแ„‰แ…ฅแ†ซ
ย 
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
๋ชจ์–ด์ดํŽ™ํ‹ฐ๋ธŒ C++ 3,4์žฅ ์˜ˆ์™ธ, ํšจ์œจ ์Šคํ„ฐ๋””
ย 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ+แ„Œแ…ฎแ„‹แ…ญ+แ„‹แ…ญแ†ผแ„‹แ…ฅ+แ„Œแ…ฅแ†ผแ„…แ…ต 20160304
ย 
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ตแ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ Collections แ„†แ…ฉแ„ƒแ…ฒแ†ฏ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
ย 
[Swift] Data Structure - Stack
[Swift] Data Structure - Stack[Swift] Data Structure - Stack
[Swift] Data Structure - Stack
ย 
Data Structure 4
Data Structure 4Data Structure 4
Data Structure 4
ย 
2014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #72014-15 Intermediate C++ Study #7
2014-15 Intermediate C++ Study #7
ย 
[Swift] Functions
[Swift] Functions[Swift] Functions
[Swift] Functions
ย 
Programming java day2
Programming java day2Programming java day2
Programming java day2
ย 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
ย 
Light Tutorial Python
Light Tutorial PythonLight Tutorial Python
Light Tutorial Python
ย 
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„
Kgc2006 Template Metaprogramming์„ ์ด์šฉํ•œ LuaTinker ๊ตฌํ˜„
ย 

More from Gyeongwook Choi

JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#Gyeongwook Choi
ย 
approximation algorithm
approximation algorithmapproximation algorithm
approximation algorithmGyeongwook Choi
ย 
introduction to dynamic programming and linear programming
introduction to dynamic programming and linear programmingintroduction to dynamic programming and linear programming
introduction to dynamic programming and linear programmingGyeongwook Choi
ย 
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จ
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จPostmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จ
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จGyeongwook Choi
ย 

More from Gyeongwook Choi (8)

MEC++ 5
MEC++ 5MEC++ 5
MEC++ 5
ย 
MEC++ 3,4
MEC++ 3,4MEC++ 3,4
MEC++ 3,4
ย 
MEC++ 1, 2
MEC++ 1, 2MEC++ 1, 2
MEC++ 1, 2
ย 
EC 789
EC 789EC 789
EC 789
ย 
JSON with C++ & C#
JSON with C++ & C#JSON with C++ & C#
JSON with C++ & C#
ย 
approximation algorithm
approximation algorithmapproximation algorithm
approximation algorithm
ย 
introduction to dynamic programming and linear programming
introduction to dynamic programming and linear programmingintroduction to dynamic programming and linear programming
introduction to dynamic programming and linear programming
ย 
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จ
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จPostmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จ
Postmortem d ao_c_แ„Žแ…ฌแ„€แ…งแ†ผแ„‹แ…ฎแ†จ
ย 

STL study (skyLab)

  • 2. STL = Standard Template Library
  • 3. Template ์ž๋ฃŒํ˜•์€ ๋‹ค๋ฅด์ง€๋งŒ ๋‚ด๋ถ€ ์ž‘๋™์€ ๋น„์Šทํ•œ ํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜๋“ค์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ int min( int a, int b ) { return ( a < b ) ? a : b; } ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ์ž๋ฃŒํ˜•์ด float์ธ ๋‘ ๋ณ€์ˆ˜ ์ค‘์—์„œ ์ž‘์€ ๊ฐ’์„ ์–ป์œผ๋ ค๋ฉด float min( float a, float b ) { return ( a < b ) ? a : b; } floatํ˜•์„ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‘ ํ•จ์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ์ œ์™ธํ•˜๋ฉด ๋˜‘๊ฐ™์€ ํ•จ์ˆ˜์ด๋‹ค. ์ด๋Ÿด ๋•Œ ์ž‘์—…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ template <class T> T min ( T a, T b ) { return ( a < b ) ? a : b; } ์—ฌ๊ธฐ์„œ template๋ผ๋Š” ๊ฒƒ์€ ์ด ํ•จ์ˆ˜๊ฐ€ template ํ•จ์ˆ˜๋ผ๋Š” ๋œป์ด๊ณ , <class T>๋Š” T๋ผ๋Š” ์ž๋ฃŒํ˜•์„ ์ด ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๊ฒ  ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ T๋Š” a์™€ b์˜ ์ž๋ฃŒํ˜•์ด ๋ฌด์—‡์ธ์ง€ ์ง€๊ธˆ์€ ์•Œ ์ˆ˜ ์—† ์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ a์™€ b์˜ ์ž๋ฃŒํ˜•์„ T๋ผ๊ณ  ํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋ž˜์„œ min(a, b)ํ•˜๋ฉด a, b์˜ ์ž๋ฃŒํ˜•์— ์ƒ๊ด€์—†์ด ๋” ์ž‘์€ ๊ฐ’์ด ๋ฆฌํ„ด๋œ๋‹ค.
  • 4. ์•ž์—์„œ ๋ณธ ๊ฒƒ์€ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํด๋ž˜์Šค์—๋„ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ๋ฅผ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค. template <class T> class A { T m_t; public: A(T t): m_t(t) {} void f(T t); }; ์œ„์˜ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜์—์„œ๋Š” <class T>๋กœ ์ •์˜ํ•œ ์ž๋ฃŒํ˜•์„ ์ž๋™์ ์œผ๋กœ ์ธ์‹ํ•œ ๋ฐ˜๋ฉด์— ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋ฃŒํ˜•์„ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•˜๋Š” ์ฐจ์ด์ ์ด ์žˆ๋‹ค. A<int> a(10); ์˜ˆ์‹œ์™€ ๊ฐ™์ธ ์ž๋ฃŒํ˜•์„ int๋กœ ์„ ์–ธํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” class A๋Š” ๋‹ค์Œ๊ณผ ๋™์ผํ•˜๋‹ค. class A { int m_t; public: A(int t): m_t(t) {} void f(int t); }; ์ด๋•Œ < > ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์€ int๋‚˜ float์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์€ ๋ฌผ๋ก ์ด๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒˆ๋กœ ์ •์˜ํ•œ ํด๋ž˜์Šค ๋‚˜ ํฌ์ธํ„ฐํ˜•๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • 5. ์•ž์˜ ์˜ˆ์ œ๋ฅผ ์‘์šฉํ•ด์„œ ์ข€ ๋” ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. template <class A, class B, int MAX> class TwoArray { // blah blah A arr1[MAX]; B arr2[MAX]; // blah blah }; ์œ„์™€ ๊ฐ™์ด < > ์•ˆ์— ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์•ž์˜ TwoArray๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ ์„ฑํ•˜๋ฉด TwoArray<int, char, 10> a; class A์—๋Š” int๊ฐ€, class B์—๋Š” char๊ฐ€, int MAX์—๋Š” 10 ์ด๋ผ๋Š” ๊ฐ’์ด ํ• ๋‹น๋˜์–ด์„œ a๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์—๋Š” Int arr1[10] char arr2[10] ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • 6. ์‹ ๊ธฐํ•œ ๊ธฐ๋Šฅ์ธ๋งŒํผ ํ…œํ”Œ๋ฆฟ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋‹ค. 1. <class T> ๋Œ€์‹ ์— <typename T>๋ฅผ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. ๋‘˜์€ ๋™์ผํ•˜๋‹ค. 2. Template์€ ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผํ•  ๋•Œ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์•„์ฃผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. (ํ•˜์ง€๋งŒ ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€๋Š” ์•Š๋‹ค.) 3. ์ค‘์š”ํ•œ ๊ฒƒ์€ template function์€ ํ•ญ์ƒ ํ—ค๋” ํŒŒ์ผ์— ๋†“์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” template function์€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ template function์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ํ•จ์ˆ˜ ์—ญ์‹œ ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋˜ ์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • 7. STL ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์•ž์—์„œ ์‚ดํŽด๋ณธ template ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ๊ฒƒ ์ข…๋ฅ˜์—๋Š” STL Containers, Iterators, Algorithms, Allocators, Function Object๊ฐ€ ์žˆ๋‹ค. STL Containers ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค. ์‚ฌ์šฉ๋ฒ•๋“ค์ด ๋น„์Šทํ•˜๋‹ˆ linked list๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž. // ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ๋œ๋‹ค #include <list> // ํ•˜๋‚˜ ์ƒ์„ฑํ•˜์ž // template์—์„œ ๋ณธ ๋ฌธ๋ฒ•์ด ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค. // ์ƒ์„ฑํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ < > ์•ˆ์— ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. std::list<int> intList; // ๋ฆฌ์ŠคํŠธ์— element๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์ž // ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•œ push_back()์€ ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ intList.push_back(5); // ๊ทธ๋Ÿผ ์ด์ œ ์ถ”๊ฐ€๋œ ๊ฐ’๋“ค ์ค‘์— 5๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์ง€์›Œ๋ณด์ž intList.remove(5);
  • 8. ๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด assign // ๊ธฐ์กด์— ์žˆ๋˜ elements๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด elements๋กœ ๋Œ€์ฒด list::clear // ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  elements ๊ด‘์—ญ ์‚ญ์ œ empty // ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ max_size // ๋ฆฌ์ŠคํŠธ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ ๋ฐ˜ํ™˜ get_allocator // ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ allocator๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋ฐ˜ํ™˜ resize // ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ฅผ ์ƒˆ๋กœ ์ง€์ • (๋” ๊ธธ์–ด์ง€๋ฉด ๊ธธ์–ด์ง„ ์ž๋ฆฌ๋Š” ๊ธฐ๋ณธ๊ฐ’๋“ค๋กœ ์ฑ„์›Œ์ง€๊ณ , ๋” ์งง์•„์ง€๋ฉด ์งง์•„์ง„ ๊ธธ์ด๋ณด๋‹ค ๋’ค์— ์žˆ๋˜ elements๋Š” ์ง€์›Œ์ง) reverse // ๋ฆฌ์ŠคํŠธ์˜ elements์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š”๋‹ค size // ์ง€๊ธˆ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ ๋ฐ˜ํ™˜ sort // ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ elements๋ฅผ ์ •๋ ฌ splice // ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œํ•œ element๋ฅผ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž… swap // ๋‘ ๋ฆฌ์ŠคํŠธ์˜ elements๋ฅผ ์„œ๋กœ ๋ฐ”๊พผ๋‹ค unique // ๋ฆฌ์ŠคํŠธ์—์„œ ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๊ฑฐ๋‚˜ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ์ง€๋Š” elements๋ฅผ ์‚ญ์ œ merge // ์ง€์ •๋œ ๋ฆฌ์ŠคํŠธ์˜ elements๋ฅผ ๋Œ€์ƒ์ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ ์ƒˆ๋กœ ์ •๋ ฌ
  • 9. front // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ reference ๋ฅผ ๋ฐ˜ํ™˜ back // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ reference ๋ฅผ ๋ฐ˜ํ™˜ begin // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜ list::cbegin // ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜ end // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜ list::cend // ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜ rbegin // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜ list::crbegin // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ์ฒซ ๋ฒˆ์งธ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜ rend // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ iterator๋ฅผ ๋ฐ˜ํ™˜ list::crend // ๋ฆฌ์ŠคํŠธ์˜ ์—ญ์ˆœ์—์„œ ๋งˆ์ง€๋ง‰ element์— ๋Œ€ํ•œ const iterator๋ฅผ ๋ฐ˜ํ™˜ ๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
  • 10. list::emplace // ํŠน์ •ํ•œ ์œ„์น˜์— element ์‚ฝ์ž… list::emplace_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— elements ์ถ”๊ฐ€ list::emplace_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— elements ์ถ”๊ฐ€ insert // ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ •ํ•œ ์œ„์น˜์— ํ•˜๋‚˜ ํ˜น์€ ๋‹ค์ˆ˜์˜ element๋ฅผ ์‚ฝ์ž… push_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค์— element ์ถ”๊ฐ€ push_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž์— element ์ถ”๊ฐ€ erase // ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ •ํ•œ ์œ„์น˜์— ์žˆ๋Š” element ํ•˜๋‚˜ ํ˜น์€ ๋‹ค์ˆ˜๋ฅผ ์‚ญ์ œ pop_back // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ๋’ค element ์‚ญ์ œ pop_front // ๋ฆฌ์ŠคํŠธ์˜ ๋งจ ์•ž element ์‚ญ์ œ remove // ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋งŒ์กฑํ•˜๋Š” elements ์‚ญ์ œ remove_if // ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” elements ์‚ญ์ œ // operator = // ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  element๋ฅผ ๋ณต์‚ฌ ๊ทธ ์™ธ์—๋„ STL์—๋Š” ๋‹ค์–‘ํ•œ ๋ฉค๋ฒ„ํ•จ์ˆ˜๋“ค์ด ์žˆ๋‹ค. list๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด
  • 11. vector // ๋™์ ์ธ ๋ฐฐ์—ด๋กœ์จ ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค deque // ์ ‘๊ทผ์‹œ๊ฐ„์€ array, ์ถ”๊ฐ€ ์‚ญ์ œ ์‹œ๊ฐ„์€ linked list์ธ ์ž๋ฃŒ๊ตฌ์กฐ map // key๋ฅผ ํ†ตํ•ด์„œ value์— ์ ‘๊ทผํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ, key์™€ value ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค ***๊ด€๋ จ msdn ํŽ˜์ด์ง€ http://msdn.microsoft.com/en-us/library/vstudio/1fe2x6kt(v=vs.100).aspx ์ž์ฃผ ์“ฐ์ด๋Š” STL container
  • 12. Algorithms ๋ง๊ทธ๋Œ€๋กœ ์•Œ๊ณ ๋ฆฌ๋“ฌ์œผ๋กœ์จ ์ •๋ ฌ, ์ฐพ๊ธฐ, ์ˆœ์„œ ๋ฐ”๊พธ๊ธฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ STL container์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๊ฐœ๋ณ„ ์•Œ๊ณ ๋ฆฌ๋“ฌ์„ includeํ•˜์ง€ ์•Š๊ณ  ํ•œ๋ฒˆ์— ์ „์ฒด๋ฅผ includeํ•œ๋‹ค. // ๋‹ค์Œ๊ณผ ๊ฐ™์ด includeํ•ด์ฃผ๊ณ  #include <algorithm> // ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. std::sort(first, last); ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋œ sort()๋Š” first์—์„œ last๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ, ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” N = last โ€“ first์ผ ๋•Œ, O(N log N)์ด๋‹ค. ์ฃผ์˜ํ•  ์ ์€ sort()๋Š” stableํ•œ ์•Œ๊ณ ๋ฆฌ๋“ฌ์ด ์•„๋‹ˆ๋ฏ€๋กœ stableํ•œ ์ •๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ์›ํ•œ๋‹ค๋ฉด stable_sort()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ์•Œ๊ณ ๋ฆฌ๋“ฌ์˜ ํŠน์ง•์€ msdn์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • 13. find() // ์„ ํ˜• ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ replace() // ํŠน์ •ํ•œ ๊ฐ’์„ ๊ฐ–๋Š” element๋ฅผ ์ฐพ์•„์„œ ์ž…๋ ฅํ•œ ๊ฐ’์œผ๋กœ ๊ต์ฒด reverse() // ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š”๋‹ค binary_search() // ์›์†Œ๋“ค์ด ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ข€ ๋” ๋นจ๋ฆฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค ***๊ด€๋ จ msdn ํŽ˜์ด์ง€ http://msdn.microsoft.com/en-us/library/vstudio/wh15hsex(v=vs.100).aspx ์ž์ฃผ ์“ฐ์ด๋Š” Algorithms