๋ค์ ์ ๋ฆฌํ๋ C++ STL ์๋ฃ๊ตฌ์กฐ array
[ STL ์๋ฃ๊ตฌ์กฐ array ]
array๋ ๋ค๋ฅธ STL ์ปจํ ์ด๋์ ๊ฐ์ด ๋์ผํ ์๋ฃํ์ ๋ด์ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด STL์์ ์ ๊ณตํ๋ ๋ฐฐ์ด ์ปจํ ์ด๋์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ๋ฐฐ์ด๋ณด๋ค ์ข ๋ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ง์ ๋๋ํ ๋ฐฐ์ด์ด๋ค.
์ฆ, POD ๋ฐฐ์ด์ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ํ๋ฉด์ ๋ค๋ฅธ ์ผ๋ ํ ์ ์๋๋ก ํด๋์ค๋ก ๋ง๋ ๋ฐฐ์ด์ด๋ค.
๊ทธ๋ฌ๋ฉด์๋ POD ๋ฐฐ์ด๊ณผ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ๊ฐ๋ค.
POD๋? Plain Old Data. ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐ์์ ์ธ ๋ฐ์ดํธ์ด์ ๋งํ๋ค.
๋ฐฐ์ด์ ๋จ์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋์ผํ ์๋ฃํ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ๊ณต๊ฐ์ ์ ์ฅํ๋ค.
๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ ๋ก ๋ถ์ด์์ผ๋ฏ๋ก ์์ ๋ฒ์ง ์ฃผ์๋ง ๊ธฐ์ตํ๊ณ ์์ผ๋ฉด
๋ฐฐ์ด์ ๋ค๋ฅธ ์์๋ก ์ด๋ํ๋ ๊ฒ์ O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
์ฆ, a[0]์ ์ต์ธ์คํ๋ a[9]์ ์ต์ธ์คํ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ฐ๋ค.
์๋ฃ์ ์ ๊ทผํ๋ ์๋๋ฉด์์ ์ด ๋ณด๋ค ๋น ๋ฅธ ์๋ฃ๊ตฌ์กฐ๋ ์๋ค.
๊ทธ๋ฐ๋ฐ array๋ ๋ค๋ฅธ ๋ชจ๋ STL ์ปจํ ์ด๋์๋ ๋ค๋ฅธ ์ ์ด ์๋ค.
๋ค๋ฅธ STL ์ปจํ ์ด๋๋ ์ ์ฅํ ์์์ ๊ฐฏ์๊ฐ ์ผ๋ง์ธ์ง ๋ชจ๋ฅด๋ ์ํ๋ก ์ฌ์ฉํ ์ ์์ง๋ง,
array๋ ๊ทธ๋ด ์ ์๋ค. array๋ ์๋ฃ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ ๋์ ์ผ๋ก ํ ๋นํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, array๋ ์๋ฃํ์ ๊ฐ์๊ฐ ์ปดํ์ผ ํ์์ ์ ํด์ ธ ์์ผ๋ฉฐ ์คํ๋๋ ๋์ ๊ฐ์๊ฐ ๋ณ๋๋ ์ผ์ด ์๋ค.
๋ฐ๋ผ์ array๋ ๊ฐ์๊ฐ ๊ณ ์ ๋์ด ์๊ณ ์์ผ๋ก๋ ๋ณ๋๋ ์ผ์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉฐ,์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ ์ฌ์ฉํ๊ธฐ์ ์ ๋นํ์ฌ์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด STL array์๋ ์ด๋ค ํต์ฌ ๊ธฐ๋ฅ๋ค์ด ์๋์ง ์ดํด๋ณด์.
1. array::data()
๋ฐฐ์ด์ ์์ ๋ฒ์ง ์ฃผ์๋ฅผ ๋ฐํํด์ค๋ค.
2. array::begin() & array::end()
array ์ฒ์๊ณผ ๋ง์ง๋ง ๋ฐ๋ณต์๋ฅผ ๋ฐํํด์ค๋ค.
๋ง์ง๋ง ๋ฐ๋ณต์ end๋ ๋ง์ง๋ง ์์๋ฅผ ๊ฐ๋ฆฌํค์ง ์๋๋ค๋ ์ ์ ์ ์ํ์.
๋ง์ง๋ง ์์์ ๋ค์ ์์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค. **
3. array::front & array::back()
๋ฐฐ์ด์ ์ฒ์๊ณผ ๋ง์ง๋ง ์์๋ฅผ ๋ฐํํด์ค๋ค.
4. array::empty()
๋ฐฐ์ด์ด ๋น์ด์๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ๋ฐํํด์ค๋ค.
๋น์๋ค๋ฉด true, ์์๊ฐ ์๋ค๋ฉด false๋ฅผ ๋ฐํํ๋ค.
5. array::size() & array::max_size()
๋ฐฐ์ด์ ํ์ฌ ์์ ๊ฐ์์ ์ต๋ ์์ ๊ฐ์๋ฅผ ๊ฐ๊ฐ ๋ฐํํด์ค๋ค.
array์ ์์๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ผ๋ฐ ๋ฐฐ์ด๊ณผ ๊ฐ๋ค.
๋ฒ์ ๊ธฐ๋ฐ for(range-based for)๋ฌธ์ ์ฌ์ฉํ๊ฑฐ๋, ์ผ๋ฐ์ ์ธ for๋ฌธ์ ์ฌ์ฉํ๋ค.
[ ์ ๋ฆฌ ]
- array๋ ์ค๋งํธํ ๋ฐฐ์ด์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค.
ํด๋์ค๋ก ๋ง๋ STL array๋ ๋ฐฐ์ด์ด ๊ฐ์ง ์ฅ์ ์ ๋ํ์ฌ ๋ฐฐ์ด์์ ํ ์ ์์๋
๊ธฐ๋ฅ๋ค์ ๋ฉค๋ฒ๋ก ์ ๊ณตํ๋ ์ค๋งํธํ ๋ฐฐ์ด์ธ ๊ฒ์ด๋ค.
- array๋ ์๋ฃ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ํ ๋น ํ์ง ์๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์(contiguous)๋์ด ์๋ค.
- ์๋ฃ์ ๊ฐ์๊ฐ ์ปดํ์ผ ํ์์ ์ ํด์ ธ ์์ผ๋ฉฐ, ์คํ๋๋ ๋์ ๊ฐ์๊ฐ ๋ณ๋๋ ์ผ์ด ์๋ ๊ฒฝ์ฐ
์ด๋ณด๋ค ๋ ์ข์ ์๋ฃ๊ตฌ์กฐ๋ ์๋ค. ์๋์ ๋ฉ๋ชจ๋ฆฌ ๋ ๋ค์์ ๋ง์ด๋ค.