๐ vecotr ๋ฉ์๋์ธ resize์ reserve์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์!
๋ฒกํฐ๋ ์ผ์ ํฌ๊ธฐ์ ๋ฐฐ์ฌ์ ํ ๋นํ ๋ค, push_back์ ํตํ์ฌ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ์ค ๋ฒกํฐ์ size๊ฐ capacity์ ๊ฐ์ ์ก์ ๋, ๋ค์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅํ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํ์ฌ ํฌ๊ธฐ๊ฐ ๊ธฐ์กด ๋ฒกํฐ์ 2๋ฐฐ์ธ ๋ฐฐ์ด์ ์๋ก ํ ๋นํ๊ณ , ๊ธฐ์กด์ ๊ฐ์ ๋ณต์ฌํ๊ณ , ๊ธฐ์กด ๋ฒกํฐ๋ฅผ ํด์ ํ๋ ํ ๋น โ ๋ณต์ฌ โ ํด์ ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
์ด ๊ณผ์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ผ๋ก ๊ฐํน PS ์ค ์ด๋๋ฌธ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด resize๋ reserve๋ฅผ ์ด์ฉํ์ฌ ๋ฏธ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํด ๋์ ์ ์๋ค.
์ด๋ ์ฉ๋๊ฐ ๋งค์ฐ ๋น์ทํด๋ณด์ด์ง๋ง, ๋ถ๋ช
ํ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค. ๊ทธ ์ ์ size์ capacity์ ์ ์๋ถํฐ ์์๋ณด์.
์ฌ๊ธฐ์ ๋ฏธ๋ฆฌ ํ ๋นํด ๋์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ capacity, ๋ฐฐ์ด์ ์ ์ฅ๋ ์์์ ๊ฐ์๋ฅผ size ๋ผ๊ณ ํ๋ค. ๋ํ ๋ฒกํฐ์ size( ), capacity( ) ๋ฉ์๋๋ฅผ ํตํด ๊ฐ๊ฐ์ ๊ฐ์ ๊ตฌํ ์ ์๋ค.
constexpr void resize(size_type count);
constexpr void resize(size_type count, const value_type& value);
๋ฒกํฐ์ resize( ) ๋ฉ์๋๋ ๋ฒกํฐ ์์์ size๋ฅผ count๋ก ๊ฐ๋๋ก ์กฐ์ ํด์ฃผ๋ ์ญํ ์ ํ๋ค.
constexpr void reserve(size_type new_cap);
๋ฒกํฐ์ reserve( ) ๋ฉ์๋๋ ๋ฒกํฐ์ capacity๋ฅผ new_cap๋งํผ ํ ๋นํด์ฃผ๋ ์ญํ ์ ํ๋ค.
new_cap์ด ํ์ฌ ๋ฒกํฐ์ capacity๋ณด๋ค ํด ๋๋ง ๋์ํ๋ฉฐ, ์ด๋ ํ ๊ฐ์ผ๋ก ์ด๊ธฐํํ์ง ์๋๋ค.
์ฆ ์ ๋ฆฌํด๋ณด๋ฉด resize( )๋ ๋ฒกํฐ์ size๋ฅผ ์กฐ์ ํ๋ ํจ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋กญ๊ฒ ํ ๋น + ์ด๊ธฐํ๋ฅผ ์งํํ๋ฉฐ, reserve( ) ๋ ๋ฒกํฐ์ capacity๋ฅผ ์กฐ์ ํ๋ ํจ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋กญ๊ฒ ํ ๋นํ๋ ์ด๊ธฐํ๋ฅผ ์ํค์ง ์๋๋ค!
๋ฒกํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค๊ฐ resize( ) ์ reserve( )์ ์ฐจ์ด์ ์ ๋ชจ๋ฅด๊ณ ์๋ฌด๊ฑฐ๋ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ ๋ค์ ๊ฐ ๋ฉ์๋์ ๋ํ ์ฉ๋๋ฅผ ๊ณต๋ถํ๊ณ ํฌ์คํ ํ๊ฒ ๋์๋ค. ์ผ๋ง ์ ์ reserve๋ฅผ reverse๋ก ๋ณด๊ณ ํ์ฐธ์ ๊ณ ๋ฏผํ๋ ๋ ์์ ์ด ๋ ์ค๋ฅธ๋ค ใ ์ด์ฉ๋ ์ค๋๋ ์ง์ +1 ๐ช
[๋ด์ฉ ์ฐธ์กฐ] https://director-joe.kr/27