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