01. [C++] STL (Standard Template Library) - Vector

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         ๋งˆ์ง€๋ง‰ ์›์†Œ ๋‹ค์Œ ์œ„์น˜์ •๋ณด(๋ฐ˜๋ณต์ž)๋ฅผ ๋ฐ˜ํ™˜.

 

 

[ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•œ ์›์†Œ ์ˆœํšŒ ]

๊ฐ„์ ‘ ์ฐธ์กฐ ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฒ„๋กœ๋”ฉ ๋˜์–ด์žˆ๋‹ค.

 

 

 

[ ์ž„์˜ ์ ‘๊ทผ ๋ฐ˜๋ณต์ž ]

์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์ž„์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

[ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•œ ์ค‘๊ฐ„ ์‚ฝ์ž… ]

 

๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•ด์„œ ์ค‘๊ฐ„ ์‚ฝ์ž…์„ ํ•œ ์ดํ›„์—๋Š”

ํ˜„์žฌ ๋ฐ˜๋ณต์ž์˜ ์œ„์น˜์ •๋ณด๋Š” ๋ชจ๋‘ ๋ฌดํšจํ™”๋˜๋ฏ€๋กœ ์ƒˆ๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

 

 

[ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•œ ์ค‘๊ฐ„ ์ œ๊ฑฐ ]