Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1103)

KoreanFoodie's Study

Effective Modern C++ | ํ•ญ๋ชฉ 40 : ๋™์‹œ์„ฑ์—๋Š” std::atomic ์„ ์‚ฌ์šฉํ•˜๊ณ , volatile ์€ ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ผ.

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 40 : ๋™์‹œ์„ฑ์—๋Š” std::atomic ์„ ์‚ฌ์šฉํ•˜๊ณ , volatile ์€ ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ์šฉํ•˜๋ผ. ํ•ต์‹ฌ : 1. std::atomic ์€ ๋ฎคํ…์Šค ๋ณดํ˜ธ ์—†์ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ๋™์‹œ์  ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ž‘์„ฑ์„ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค. 2. volatile ์€ ์ฝ๊ธฐ์™€ ๊ธฐ๋ก์„ ์ตœ์ ํ™”๋กœ ์ œ๊ฑฐํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ํŠน๋ณ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ํ•„์š”ํ•œ ๋„๊ตฌ์ด๋‹ค. std::atomic ์€ ๋ณดํ†ต ๋ฎคํ…์Šค๋ณด๋‹ค ๋” ํšจ์œจ์ ์ธ ๊ธฐ๊ณ„์–ด ๋ช…๋ น๋“ค๋กœ ๊ตฌํ˜„๋œ๋‹ค. std::atomic ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. std::atomi..

Tutorials/C++ : Advanced 2022. 10. 26. 10:09
Effective Modern C++ | ํ•ญ๋ชฉ 39 : ๋‹จ๋ฐœ์„ฑ ์‚ฌ๊ฑด ํ†ต์‹ ์—๋Š” void ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 39 : ๋‹จ๋ฐœ์„ฑ ์‚ฌ๊ฑด ํ†ต์‹ ์—๋Š” void ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ๊ณ ๋ คํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ฐ„๋‹จํ•œ ์‚ฌ๊ฑด ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ, ์กฐ๊ฑด ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜ ์„ค๊ณ„์—๋Š” ์—ฌ๋ถ„์˜ ๋ฎคํ…์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๊ฒ€์ถœ ๊ณผ์ œ์™€ ๋ฐ˜์‘ ๊ณผ์ œ์˜ ์ง„ํ–‰ ์ˆœ์„œ์— ์ œ์•ฝ์ด ์žˆ์œผ๋ฉฐ, ์‚ฌ๊ฑด์ด ์‹ค์ œ๋กœ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ๋ฐ˜์‘ ๊ณผ์ œ๊ฐ€ ๋‹ค์‹œ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. 2. ํ”Œ๋ž˜๊ทธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ๋Ÿฐ ๋‹จ์ ๋“ค์ด ์—†์ง€๋งŒ, ๋Œ€์‹  ์ฐจ๋‹จ์ด ์•„๋‹ˆ๋ผ ํด๋ง์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 3. ์กฐ๊ฑด ๋ณ€์ˆ˜์™€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์กฐํ•ฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜, ๊ทธ๋Ÿฐ ์กฐํ•ฉ์„ ์ด์šฉํ•œ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋ณต์žกํ•˜๋‹ค. 4. std::promise ์™€ ๋ฏธ๋ž˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:08
Effective Modern C++ | ํ•ญ๋ชฉ 38 : ์Šค๋ ˆ๋“œ ํ•ธ๋“ค ์†Œ๋ฉธ์ž๋“ค์˜ ๋‹ค์–‘ํ•œ ํ–‰๋™ ๋ฐฉ์‹์„ ์ฃผ์˜ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 38 : ์Šค๋ ˆ๋“œ ํ•ธ๋“ค ์†Œ๋ฉธ์ž๋“ค์˜ ๋‹ค์–‘ํ•œ ํ–‰๋™ ๋ฐฉ์‹์„ ์ฃผ์˜ํ•˜๋ผ ํ•ต์‹ฌ : 1. ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ์ž๋Š” ๊ทธ๋ƒฅ ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์ž๋ฃŒ ๋ฉค๋ฒ„๋“ค์„ ํŒŒ๊ดดํ•  ๋ฟ์ด๋‹ค. 2. std::async ๋ฅผ ํ†ตํ•ด ์‹œ๋™๋œ ๋น„์ง€์—ฐ ๊ณผ์ œ์— ๋Œ€ํ•œ ๊ณต์œ  ์ƒํƒœ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฏธ๋ž˜ ๊ฐ์ฒด์˜ ์†Œ๋ฉธ์ž๋Š” ๊ทธ ๊ณผ์ œ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋œ๋‹ค(๊ธฐ๋‹ค๋ฆฐ๋‹ค). ํ•ฉ๋ฅ˜ ๊ฐ€๋Šฅ std::thread ๋Š” ๋ฐ”ํƒ• ์‹œ์Šคํ…œ์˜ ์‹คํ–‰ ์Šค๋ ˆ๋“œ์— ๋Œ€์‘๋œ๋‹ค. ๊ทธ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ง€์—ฐ๋˜์ง€ ์•Š์€ ๊ณผ์ œ์— ๋Œ€ํ•œ ๋ฏธ๋ž˜ ๊ฐ์ฒด๋„ ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ์— ๋Œ€์‘๋œ๋‹ค. ๋”ฐ๋ผ์„œ std::thread ๊ฐ์ฒด์™€ ๋ฏธ๋ž˜ ๊ฐ์ฒด ๋ชจ๋‘ ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ํ•ธ๋“ค(ha..

Tutorials/C++ : Advanced 2022. 10. 26. 10:08
Effective Modern C++ | ํ•ญ๋ชฉ 37 : std::thread ๋“ค์„ ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ํ•ฉ๋ฅ˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 37 : std::thread ๋“ค์„ ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ํ•ฉ๋ฅ˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ผ ํ•ต์‹ฌ : 1. ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ std::thread ๋ฅผ ํ•ฉ๋ฅ˜ ๋ถˆ๊ฐ€๋Šฅ์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ. 2. ์†Œ๋ฉธ ์‹œ join ๋ฐฉ์‹์€ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์–ด๋ ค์šด ์„ฑ๋Šฅ ์ด์ƒ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. 3. ์†Œ๋ฉธ ์‹œ detach ๋ฐฉ์‹์€ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ฏธ์ •์˜ ํ–‰๋™์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. 4. ์ž๋ฃŒ ๋ฉค๋ฒ„ ๋ชฉ๋ก์—์„œ std::thread ๊ฐ์ฒด๋ฅผ ๋งˆ์ง€๋ง‰์— ์„ ์–ธํ•˜๋ผ. ๋ชจ๋“  std::thread ๊ฐ์ฒด๋Š” ํ•ฉ๋ฅ˜ ๊ฐ€๋Šฅ(joinable) ์ƒํƒœ์ด๊ฑฐ๋‚˜ ํ•ฉ๋ฅ˜ ๋ถˆ๊ฐ€๋Šฅ(unjoinable) ์ƒํƒœ์ด๋‹ค. ํ•ฉ๋ฅ˜ ๊ฐ€๋Šฅ std::thre..

Tutorials/C++ : Advanced 2022. 10. 26. 10:07
Effective Modern C++ | ํ•ญ๋ชฉ 36 : ๋น„๋™๊ธฐ์„ฑ์ด ํ•„์ˆ˜์ผ ๋•Œ์—๋Š” std::launch::async ๋ฅผ ์ง€์ •ํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 36 : ๋น„๋™๊ธฐ์„ฑ์ด ํ•„์ˆ˜์ผ ๋•Œ์—๋Š” std::launch::async ๋ฅผ ์ง€์ •ํ•˜๋ผ ํ•ต์‹ฌ : 1. std::async ์˜ ๊ธฐ๋ณธ ์‹œ๋™ ๋ฐฉ์นจ์€ ๊ณผ์ œ์˜ ๋น„๋™๊ธฐ์  ์‹คํ–‰๊ณผ ๋™๊ธฐ์  ์‹คํ–‰์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•œ๋‹ค. 2. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ ๋•Œ๋ฌธ์— thread_local ์ ‘๊ทผ์˜ ๋ถˆํ™•์‹ค์„ฑ์ด ๋ฐœ์ƒํ•˜๊ณ , ๊ณผ์ œ๊ฐ€ ์ ˆ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ณ , ์‹œ๊ฐ„ ๋งŒ๋ฃŒ ๊ธฐ๋ฐ˜ wait ํ˜ธ์ถœ์— ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋žจ ๋…ผ๋ฆฌ์—๋„ ์˜ํ–ฅ์ด ๊ฐ„๋‹ค. 3. ๊ณผ์ œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋ฉด std::launch::async ๋ฅผ ์ง€์ •ํ•˜๋ผ. std::async ๊ทธ ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒ ๋‹ค๋Š” ์˜..

Tutorials/C++ : Advanced 2022. 10. 26. 10:07
Effective Modern C++ | ํ•ญ๋ชฉ 35 : ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์„ ํ˜ธํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 35 : ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์„ ํ˜ธํ•˜๋ผ ํ•ต์‹ฌ : 1. std::thread API ์—์„œ๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋œ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ์ง์ ‘ ์–ป์„ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋งŒ์ผ ๊ทธ๋Ÿฐ ํ•จ์ˆ˜๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. 2. ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์Šค๋ ˆ๋“œ ๊ณ ๊ฐˆ, ๊ณผ๋‹ค๊ตฌ๋…, ๋ถ€ํ•˜ ๊ท ํ˜•ํ™”, ์ƒˆ ํ”Œ๋žซํผ์œผ๋กœ์˜ ์ ์‘์„ ๋…์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. 3. std::async ์™€ ๊ธฐ๋ณธ ์‹œ๋™ ๋ฐฉ์นจ์„ ์ด์šฉํ•œ ๊ณผ์ œ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ทธ๋Ÿฐ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. doAsyncWork ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์ž. ๋ฐฉ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:06
Effective Modern C++ | ํ•ญ๋ชฉ 34 : std::bind ๋ณด๋‹ค ๋žŒ๋‹ค๋ฅผ ์„ ํ˜ธํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 34 : std::bind ๋ณด๋‹ค ๋žŒ๋‹ค๋ฅผ ์„ ํ˜ธํ•˜๋ผ ํ•ต์‹ฌ : 1. std::bind ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋žŒ๋‹ค๊ฐ€ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ํ‘œํ˜„๋ ฅ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ํšจ์œจ์ ์ด๋‹ค. 2. C++14 ๊ฐ€ ์•„๋‹Œ C++11 ์—์„œ๋Š” ์ด๋™ ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๊ฐ์ฒด๋ฅผ ํ…œํ”Œ๋ฆฟํ™”๋œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž์— ๋ฌถ์œผ๋ ค ํ•  ๋•Œ std::bind ๊ฐ€ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. C++11 ์—์„œ๋Š” ๊ฑฐ์˜ ํ•ญ์ƒ, C++14 ์—์„œ๋Š” ํ™•๊ณ ํ•˜๊ฒŒ ๋žŒ๋‹ค๊ฐ€ std::bind ์— ๋น„ํ•ด ์šฐ์›”ํ•œ ์„ ํƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. // ์‹œ๊ฐ„์ƒ์˜ ํ•œ ์ง€์ ์„ ๋Œ€ํ‘œํ•˜๋Š” ํ˜•์‹ ๋ณ„์นญ using Time = std::chro..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 33 : std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 33 : std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ ํ•ต์‹ฌ : 1. std::forward ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌํ•  auto&& ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” decltype ์„ ์‚ฌ์šฉํ•˜๋ผ. C+14 ์—์„œ ๊ฐ€์žฅ ๊ณ ๋ฌด์ ์ธ ๊ธฐ๋Šฅ์€ ์ผ๋ฐ˜์  ๋žŒ๋‹ค(generic lambdas), ์ฆ‰ ๋งค๊ฐœ ๋ณ€์ˆ˜์— auto ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋žŒ๋‹ค์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. auto f = [](auto x) { return normalized(x); }; ์œ„ ๋žŒ๋‹ค๊ฐ€ ์‚ฐ์ถœํ•˜๋Š” ํด๋กœ์ € ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค. class ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€_๋งŒ๋“ ..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 32 : ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 32 : ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•  ๋•Œ์—๋Š” C++14 ์˜ ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ. 2. C++11 ์—์„œ๋Š” ์ง์ ‘ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค๋‚˜ std::bind ๋กœ ์ดˆ๊ธฐํ™” ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋žŒ๋‹ค ์‚ฌ์šฉ์‹œ ๊ฐ’ ๊ฐˆ๋ฌด๋ฆฌ์™€ ์ฐธ์กฐ ๊ฐˆ๋ฌด๋ฆฌ๊ฐ€ ๋งˆ๋•…์น˜ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋™ ์ „์šฉ ๊ฐ์ฒด(std::unique_ptr, std::future ๋“ฑ)์ด ์ข‹์€ ์˜ˆ์ด๋‹ค. C++14 ์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ํด๋กœ์ € ์•ˆ์œผ๋กœ ์ด๋™ํ•˜๋Š” ์ˆ˜๋‹จ์„ ์ง์ ‘ ์ œ๊ณตํ•œ๋‹ค. C++11 ์—์„œ๋„ ์ด๋™ ๊ฐˆ๋ฌด๋ฆฌ๋ฅผ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ดˆ๊ธฐํ™”..

Tutorials/C++ : Advanced 2022. 10. 26. 10:05
Effective Modern C++ | ํ•ญ๋ชฉ 31 : ๊ธฐ๋ณธ ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ๋ฅผ ํ”ผํ•˜๋ผ

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 31 : ๊ธฐ๋ณธ ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ๋ฅผ ํ”ผํ•˜๋ผ ํ•ต์‹ฌ : 1. ๊ธฐ๋ณธ ์ฐธ์กฐ ๊ฐˆ๋ฌด๋ฆฌ๋Š” ์ฐธ์กฐ๊ฐ€ ๋Œ€์ƒ์„ ์žƒ์„ ์œ„ํ—˜์ด ์žˆ๋‹ค. 2. ๊ธฐ๋ณธ ๊ฐ’ ๊ฐˆ๋ฌด๋ฆฌ๋Š” ํฌ์ธํ„ฐ(ํŠนํžˆ this)๊ฐ€ ๋Œ€์ƒ์„ ์žƒ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋žŒ๋‹ค๊ฐ€ ์ž๊ธฐ ์™„๊ฒฐ์ ์ด๋ผ๋Š” ์˜คํ•ด๋ฅผ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ํ•ญ๋ชฉ์„ ๋“ค์–ด๊ฐ€๊ธฐ ์ „, ์ž์ฃผ ๋‚˜์˜ค๋Š” ์šฉ์–ด๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์งš๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹(lambda expression) : ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์œผ๋กœ, ์†Œ์Šค ์ฝ”๋“œ์—์„œ "[ ]( ){ }" ๋กœ ํ‘œํ˜„๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ํด๋กœ์ €(closure) : ๋žŒ๋‹ค์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‹คํ–‰ ์‹œ์  ๊ฐ์ฒด. ๊ฐˆ๋ฌด๋ฆฌ ๋ชจ๋“œ(capture mode)์—..

Tutorials/C++ : Advanced 2022. 10. 26. 10:04