- ๊ฐ์ฅ ๋ง์ด ์ฐ๋ vector, string์ ๊ด๋ จ๋ ํ ๋ชจ์์ด๋ค. ํฐ1์ฅ ํ๋ฐ๋ถ์๋ ๋ชจ๋ฅด๋ ๋ด์ฉ(ํ ๋น๊ธฐ ๊ฐ์..)์ด ์ข ๋ง์์ ์ผ๋จ ๊ฑด๋ ๋ฐ์๋ค.
1. Item13. Prefer vector and string to dynamically allocated arrays. ¶
1.1. new/delete ์ฝค๋น์ ๋ฌธ์ ์ ¶
- new ํด์คฌ์ผ๋ฉด delete ํด์ค์ผ ํ๋ค๋ ๋ฒ๊ฑฐ๋ก์.
- delete [] ์ delete ๋ฅผ ์ ์จ์ผ ํจ. ์๋ชป ์ฐ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง์ง ๋ชจ๋ฆ.
- ํ๋ฒ deleteํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ deleteํ๋ฉด "์๋ชป๋ ์ฐ์ฐ... " ์ ์๋ฌ๊ฐ ๋ฐ์ง๋ ๋ชจ๋ฆ.
1.2. vector/string ์ ์ฐ๋ฉด ์ข์ ์ด์ ¶
- ์์ ์ด ์์์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํ๋ค.(์บฌ)
- ์์ ์ด ์์์ ๋์ด๋๋ค.(์ญ์ ์บฌ)
- ๋ฐฐ์ด์ ์ ๊ณตํ์ง ์๋ ์ฐ์ฐ์ ์ ๊ณตํ๋ค.
- char*์ ์ง์ฆ๋๋ค.
1.3. ๋์ค์ ์ฐพ์๋ณผ๊ฒ๋ค ¶
- reference count๋ผ๋ ๊ฒ ์๋๋ฐ.. ๋ญํ๋ ๊ฑธ๊น.. ์ฐธ์กฐ ๋ณ์ ์ธ๋๊ฑด๊ฐ?--a AfterCheck
- ๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์์๋ ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ํ ๋นํด์ฃผ๊ณ ๋ณต์ฌํด์ฃผ๋ฏ๋ก ์๊ฐ์ด ์ ์ฝ๋๋ค๋๋ฐ.. ๊ตณ์ด ์ด๊ฒ๊น์ง ์ธ๊ฒ์ธ๊ฐ..--;
2. Item14. Use reserve to avoid unnecessary reallocations. ¶
2.1. vector/string์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ๋ ๋ ์ปค๊ฐ๋ ๊ณผ์ ¶
- ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค.(์ผ๋ฐ์ ์ผ๋ก ๋๋ฐฐ ์ปค์ง๋ค.)
- ์๋ณธ ์ปจํ
์ด๋์ ๊ฐ๋ค์ ์๋กญ๊ฒ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฎ๊ธด๋ค.
- ์๋ณธ ์ปจํ
์ด๋์์ ์๋ ๊ฐ์ฒด๋ค์ ์ญ์ ํ๋ค.
- ์๋ณธ ์ปจํ
์ด๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ค.
2.2. ํท๊ฐ๋ฆด์ ์๋ ์ปจํ
์ด๋ ํฌ๊ธฐ์ ๊ดํ ๋ฉ์๋๋ค ¶
- size() - ํ์ฌ ์ปจํ
์ด๋์ ๋ค์ด ์๋ ๊ฐ์ฒด์ ์.(์ต๋๋ ์๋)
- capacity() - ํ์ฌ ํ ๋น๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ต๋ ์์ฉํ ์ ์๋ ๊ฐ์ฒด ์
- resize(n) - n๊ฐ ๋ฃ์์ ์๊ฒ ๋ฉ๋ชจ๋ฆฌ ์ฌํ ๋น
- n์ด ํ์ฌ size()๋ณด๋ค ์์ผ๋ฉด - ๋์์๋ถํฐ size() - n ๋งํผ ์ง์ด๋ค.
- n์ด ํ์ฌ size()๋ณด๋ค ํฌ๋ฉด - ๋์์๋ถํฐ n - size() ๋งํผ์ ๋น ๊ณต๊ฐ์ ์ถ๊ฐํ๋ค.
- n์ด ํ์ฌ capacity()๋ณด๋ค ํฌ๋ฉด - ๋ฉ๋ชจ๋ฆฌ ์ฌํ ๋นํ๋ค.
- reserve() - ๊ทธ ์ปจํ
์ด๋์ capacity๋ฅผ ์ต์ n์ด ๋๊ฒ ํ ๋น.
- vector์์ ๋ง์ฝ ํ์ฌ capacity๋ณด๋ค n์ด ์๋ค๋ฉด? - ์ฉ๊น๋ค.
- string์์๋ ? ์ค์ผ์ง๋ ๋ชจ๋ฅธ๋ค.(--;)
2.3. ํฌ๊ธฐ๋ฅผ ์ ์งํ๊ณ ์ถ๋ค๋ฉด reserve ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์. ¶
- reserve๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌํ ๋น, ๋ฐ๋ณต์, ํฌ์ธํฐ, ์ฐธ์กฐ ๋ฑ๋ฑ์ ๊ฐฑ์ ์ ์ต์ํ ์ํฌ์ ์๋ค.
- reserve๋ก ์์ฐฝ ํฌ๊ฒ ์ก์ ๋๊ณ ๋์ค์ trim() ์จ์ฃผ์. ๋น๊ณต๊ฐ ์ ๊ฑฐ๋๋ค.
3. Item15. Be aware of variations in string implementations. ¶
4. Item16. Know how to pass vector and string data to legacy APIS ¶
5. Item17. Use 'the swap trick' to trim excess capacity. ¶
6. Item18. Avoid using vector<bool>. ¶