๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ

STL vector class

by ๐“ƒ๐’ถ๐“ƒ๐’ถ๏ฝก 2015. 3. 25.

vector๋Š” STL์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐฐ์—ด(array)์ธ๋ฐ, vector๋Š” ๋ฐฐ์—ด์„ ๋Œ€์ฒดํ•˜์—ฌ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ์ง€๋งŒ vector๋Š” ๋™์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค๋Š” ์ ์ด vector์™€ array์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋‹ค.

 

1. ๋ฐฐ์—ด์˜ ํŠน์ง•

- ํฌ๊ธฐ ๊ณ ์ •: ์ฒ˜์Œ์— ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ดํ›„์— ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•œ๋‹ค.

- ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜์ง€ ์•Š๋‹ค.

- ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

- ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ๋žœ๋ค ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

2. vector๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

- ์ €์žฅํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€๋ณ€์ ์ด๋‹ค.

- ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์—†๋‹ค. ๊ฐ€์žฅ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.

- ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฅด์ง€ ์•Š๋‹ค.

- ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋žœ๋คํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

vector class ์ฃผ์š” ๋ฉค๋ฒ„

 

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

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

C++ ํŒŒ์ผ ์ž…์ถœ๋ ฅ ofstream / ifstream  (0) 2015.04.09
Eigen3 Library  (0) 2015.03.27
STL set class  (0) 2015.03.25
STL map class  (0) 2015.03.25
[tbd] Deformation Transfer for Triangle Meshes (2004)  (0) 2015.03.23