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.0149 sec