[STL] Vector & Deque

์น˜์น˜ยท2025๋…„ 5์›” 28์ผ

STL

๋ชฉ๋ก ๋ณด๊ธฐ
10/21
post-thumbnail

๐Ÿ“Œ ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ - Vector


โœ… std::vector ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ ์ •๋ฆฌ

โœ… ์ƒ์„ฑ์ž

๊ตฌ๋ถ„์ธํ„ฐํŽ˜์ด์Šค์„ค๋ช…
์ƒ์„ฑ์žvector()๋นˆ ๋ฒกํ„ฐ ์ƒ์„ฑ
vector(size_type n)n๊ฐœ์˜ ๊ธฐ๋ณธ๊ฐ’ ์š”์†Œ๋กœ ์ดˆ๊ธฐํ™”
vector(size_type n, const T& val)n๊ฐœ์˜ val ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
vector(const vector& other)๋ณต์‚ฌ ์ƒ์„ฑ์ž
vector(vector&& other)์ด๋™ ์ƒ์„ฑ์ž (C++11)
vector(initializer_list<T> ilist)๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™” (C++11)
template<class InputIterator> vector(InputIterator first, InputIterator last)๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„์œผ๋กœ ์ดˆ๊ธฐํ™”

โœ… ๋ฉค๋ฒ„ ํ•จ์ˆ˜

๋ฉค๋ฒ„ ํ•จ์ˆ˜์ธํ„ฐํŽ˜์ด์Šค์„ค๋ช…
Capacitysize()์š”์†Œ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
capacity()ํ˜„์žฌ ์šฉ๋Ÿ‰(ํ• ๋‹น๋œ ๊ณต๊ฐ„ ํฌ๊ธฐ)
resize(n)ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ์กฐ์ ˆ
reserve(n)์šฉ๋Ÿ‰์„ n ์ด์ƒ์œผ๋กœ ์ฆ๊ฐ€
empty()๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
shrink_to_fit()๋ฉ”๋ชจ๋ฆฌ๋ฅผ size์— ๋งž๊ฒŒ ์ค„์ž„ (C++11)
Element accessoperator[] / at(n)์š”์†Œ ์ ‘๊ทผ (at()์€ ๋ฒ”์œ„ ์ฒดํฌ ํฌํ•จ)
front() / back()์ฒซ/๋งˆ์ง€๋ง‰ ์š”์†Œ ์ฐธ์กฐ
data()๋‚ด๋ถ€ ๋ฐฐ์—ด ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜ (C++11)
Modifiersassign(...)๊ฐ’ ๋˜๋Š” ๋ฐ˜๋ณต์ž ๊ตฌ๊ฐ„์œผ๋กœ ๋ชจ๋“  ์š”์†Œ ๊ต์ฒด
push_back(val) / emplace_back(...)์š”์†Œ ์ถ”๊ฐ€ (๋ณต์‚ฌ / ์ง์ ‘ ์ƒ์„ฑ)
pop_back()๋งˆ์ง€๋ง‰ ์š”์†Œ ์ œ๊ฑฐ
insert(...) / emplace(...)ํŠน์ • ์œ„์น˜์— ์š”์†Œ ์‚ฝ์ž…
erase(...)ํŠน์ • ์œ„์น˜ ๋˜๋Š” ๋ฒ”์œ„ ์ œ๊ฑฐ
clear()๋ชจ๋“  ์š”์†Œ ์ œ๊ฑฐ
swap(vector& other)๋‹ค๋ฅธ ๋ฒกํ„ฐ์™€ ๊ตํ™˜
Iteratorsbegin() / end()์‹œ์ž‘/๋ ๋ฐ˜๋ณต์ž
rbegin() / rend()์—ญ๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž
cbegin() / cend()const ๋ฐ˜๋ณต์ž (C++11)
crbegin() / crend()const ์—ญ๋ฐ˜๋ณต์ž (C++11)

โœ… ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž์ธํ„ฐํŽ˜์ด์Šค์„ค๋ช…
๋น„๊ต==, !=, <, <=, >, >=์š”์†Œ์˜ ์ˆœ์„œ ๋ฐ ๊ฐ’ ๋น„๊ต ๊ฐ€๋Šฅ
๋Œ€์ž…operator=๋Œ€์ž… ์—ฐ์‚ฐ์ž
์š”์†Œ ์ ‘๊ทผoperator[]์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ

โœ… ๋ฉค๋ฒ„ ํ˜•์‹

๋ฉค๋ฒ„ ํ˜•์‹ํƒ€์ž…์„ค๋ช…
value_typeT์š”์†Œ์˜ ํƒ€์ž…
allocator_typeAllocatorํ• ๋‹น์ž ํƒ€์ž…
size_typestd::size_tํฌ๊ธฐ ๊ด€๋ จ ํƒ€์ž…
difference_typestd::ptrdiff_t๋ฐ˜๋ณต์ž ๊ฐ„ ์ฐจ์ด ๊ณ„์‚ฐ์šฉ ํƒ€์ž…
referenceT&์ฐธ์กฐ ํƒ€์ž…
const_referenceconst T&const ์ฐธ์กฐ ํƒ€์ž…
pointerT*ํฌ์ธํ„ฐ ํƒ€์ž…
const_pointerconst T*const ํฌ์ธํ„ฐ ํƒ€์ž…
iteratorRandomAccessIterator๋ฐ˜๋ณต์ž ํƒ€์ž… (๋žœ๋ค ์ ‘๊ทผ ์ง€์›)
const_iteratorconst RandomAccessIteratorconst ๋ฐ˜๋ณต์ž ํƒ€์ž…
reverse_iteratorstd::reverse_iterator<iterator>์—ญ๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž
const_reverse_iteratorstd::reverse_iterator<const_iterator>const ์—ญ๋ฐฉํ–ฅ ๋ฐ˜๋ณต์ž

โœ… vector ์ฃผ์š” ํŠน์ง•



๐Ÿ“Œ Vector ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž

โœ… ๋ฐ˜๋ณต์ž & ์ฐธ์กฐ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง๊ธฐ!

  • v.begin() & v.end() : ๋ฐ˜๋ณต์ž

  • v.front() & v.back() : ์›์†Œ ์ฐธ์กฐ


โœ… ๋ฒกํ„ฐ ์‚ฌ์ด์ฆˆ ํ• ๋‹น

๊ธฐ๋ณธ ์‚ฌ์ด์ฆˆ๋ฅผ ํ• ๋‹นํ•˜๊ณ  push_back()์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ์ด์ „ ์‚ฌ์ด์ฆˆ ์žก์€ ๊ฒƒ๊ณผ ๋ณ„๊ฐœ๋กœ ๋“ค์–ด๊ฐ„๋‹ค
โžก ๋งŒ์•ฝ ์‚ฌ์ด์ฆˆ๋ฅผ 3์œผ๋กœ ์žก๊ณ  ๊ทธ 3๊ฐœ์˜ ์›์†Œ ๊ฐ’์„ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด v[i]๋กœ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ฐ’์„ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค

โžก ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ์™€ push_back()์œผ๋กœ ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๊ฐœ!!


โœ… vector.insert() ํƒ€์ž… ์ฃผ์˜

insert()๋Š” ์›ํ•˜๋Š” ์œ„์น˜์— ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ด๋‹ค.
โžก ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋Š” ์›ํ•˜๋Š” ์œ„์น˜๋Š” ๊ผญ ๋ฐ˜๋ณต์ž ํƒ€์ž…์œผ๋กœ๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

์›ํ•˜๋Š” ์œ„์น˜ iter : ๋ฐ˜๋ณต์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
โžก ์ผ๋ฐ˜์ ์ธ ์›์†Œ ์‚ฝ์ž… (์›ํ•˜๋Š” ์œ„์น˜, ๊ฐฏ์ˆ˜, ์‚ฝ์ž…ํ•  ์›์†Œ)

์ธ์ž๋ฅผ 2๊ฐœ ๋„ฃ์–ด ์›ํ•˜๋Š” ๊ตฌ๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
โžก ์›ํ•˜๋Š” ์œ„์น˜์— ๊ตฌ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ• (์›ํ•˜๋Š” ์œ„์น˜, ๊ตฌ๊ฐ„ ๋ฒ”์œ„)


โœ… deque

โžก ์‹œํ€€์Šค ์ปจํ…Œ์ด๋„ˆ์ด๋ฉฐ ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ. ๋ฒกํ„ฐ์™€ ์œ ์‚ฌํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๋ฉด ์ž„์˜ ์ ‘๊ทผ ๋ฐ˜๋ณต์ž๋ฅผ ์ง€์›ํ•œ๋‹ค.
โžก ํ์™€๋„ ์œ ์‚ฌํ•˜๋ฉฐ ์•ž ๋’ค๋กœ ์›์†Œ๋ฅผ ์ถ”๊ฐ€, ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•ž, ๋’ค ์›์†Œ ์ถ”๊ฐ€


๐Ÿ“Œ Vector์™€ Deque ์ฐจ์ด์ 

โญ• ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค

โžก ๋ฒกํ„ฐ๋Š” ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ๋น ๋ฆ„
โžก ๋ฑ๋„ ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์—ฐ์†์ ์ด์ง€ ์•Š๊ณ  ๊ฐ๊ฐ์˜ ์ž‘์€ ๋ธ”๋ก๋“ค๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒกํ„ฐ์— ๋น„ํ•ด ๋А๋ฆผ

โญ• ์™œ Deque๋ณด๋‹ค Vector๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ?

โžก ๋ฑ์€ ์•ž ๋’ค๋กœ ์š”์†Œ ์‚ฝ์ž… / ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฒกํ„ฐ๋Š” ๋’ค๋กœ๋งŒ ์š”์†Œ ์‚ฝ์ž… / ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
โžก โœ… ํ•˜์ง€๋งŒ, ๋ฒกํ„ฐ๋Š” ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ž„์˜ ์ ‘๊ทผ(์ธ๋ฑ์Šค ์ ‘๊ทผ)์ด ๋งค์šฐ ๋น ๋ฅด๋‹ค.
โžก โœ… ๋ฑ๋„ ์ž„์˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ž‘์€ ๋ธ”๋ก๋‹จ์œ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์—ฐ์†์ ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋งŒ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒกํ„ฐ์— ๋น„ํ•ด์„œ๋Š” ๋А๋ฆฌ๋‹ค.



profile
๋‰ด๋น„ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€