U E D R , A S I H C RSS

EffectiveSTL/Vector And String

  • ฐ€žฅ ๋งŽ“ฐ๋Š” 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>.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:10
Processing time 0.0169 sec