๐ C๋ C++ (15) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ C++ ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์์๋ณด์ - (1) unique_ptr C++์๋ ์์ฃผ ์ ์ฉํ ๊ฐ๋ ์ด ์๋ค ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ ๋๋ง๋ค ๊ณ ๋ คํด์ผํ ์ ์ ๋ฐ๋ก "๋ฉ๋ชจ๋ฆฌ ๋์"์ธ๋ฐ, ๊ทธ๊ฒ์ ๋ํด ์กฐ๊ธ์ ์์ ๋กญ๊ฒ ์๊ฐํ ์ ์๋ ์ค๋งํธ ํฌ์ธํฐ๋ผ๋ ๊ฒ์ด๋ค ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํ๋๊ฑด shared_ptr์ด์๋๋ฐ, ์ฌ๋ฌ ๊ฐ๊ฐ ์๋๊ฑด ์ด์ ๊ฐ ์๋ค๋ ์๊ฐ์ด ๋ค์ด์ ํ๋์ฉ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค (๋ชจ๋ C++ ์ ๋ฌธ ๊ต์ฌ๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํ์์ต๋๋ฅ) 1. ์ค๋งํธ ํฌ์ธํฐ์๋ ๋ญ๊ฐ ์์ง? ์ค๋งํธ ํฌ์ธํฐ๋ 3๊ฐ์ง๊ฐ ์๋ค 1) unique_ptr (์ค๋ํ ๊ฑฐ) 2) shared_ptr 3) weak_ptr ์๋ ๊ฒ 3๊ฐ์ง ์ธ๋ฐ, ์ฐธ๊ณ ๋ก ์ค๋งํธ ํฌ์ธํฐ๋ C++ 11์์ ๋์ ๋ ๊ฐ๋ ์ด๋ค C++ 03์๋ auto_ptr๋ผ๋ ๊ฒ๋ ์๋ค๊ณ ํ๋ค -_-a ํ์ง๋ง ์ญ์ ๋จ ์ฐ์ง๋ง์ 1-1) ์ค๋งํธ ํฌ์ธํฐ ํค๋๋? #include or .. Boost Asio์ ๋ํด์ ์์๋ณด์ Boost ๋น๋๊ธฐ ํต์ ์๋ฒ&ํด๋ผ์ด์ธํธ๋ฅผ ์ ๋ฆฌ์ค... ํ์ ๊ฐ๋ ์ธ Asio์ ๋ํด์ ๋จผ์ ์ ๋ฆฌํด์ผ๊ฒ ๋ค ์๊ฐ๋ค์ด์ ๋ฐ๋ก ๊ฒ์๊ธ๋ก ๋บ๋ค ใ ใฑใด boost ํํ์ด์ง์ ์ค๋ช ์ด ์ ๋์ด์์ด์, ์๊ฑธ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค (์ฒจ๋ถ ๋งํฌ ์ฐธ์กฐ) 1. Boost.Asio ( Asynchronous I/O ) ๊ฐ ๋ญ์ง? Boost ๊ณต์ํํผ: Boost.Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. cf) ์ด๋ค ์ด์์ฒด์ ์ฌ๋, ์คํ ๊ฐ๋ฅํ๊ฒ ๋์ํ๊ฒ ํ ์ ์๋ ํ๋ซํผ์ด ํฌ๋ก์ค.. C++ ํด๋์ค ๋ฉค๋ฒ๋ณ์ ์ด๊ธฐํ๋ฅผ ์์๋ณด์ ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋, ํด๋์ค ์์ ์๋ ๋ฉค๋ฒ ๋ณ์์ ๋ํด์ ์ด๊ธฐํ๋ฅผ ํด์ค์ผํ๋ค๋ ๊ฒ์ ์ ์๊ณ ์๋๋ฐ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ์ด๋ ๊ฒ์ ์จ์ผํ ๊น? ์ ๋ํด์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค ๋ ํท๊ฐ๋ฆฌ๋ ์ผ์ด ์๋๋ก ~~ - ํด๋์ค ๋ฉค๋ฒ ๋ณ์๋ - ํด๋์ค ๋ฉค๋ฒ ๋ณ์ ์ด๊ธฐํ ๋ฐฉ๋ฒ 3๊ฐ์ง 1. ํด๋์ค ๋ฉค๋ฒ ๋ณ์ (Class Member Variable) ๋ ํด๋์ค ๋ฉค๋ฒ ๋ณ์ ์ด๊ธฐํ๋ฅผ ํ๋ ค๋ฉด, ๋จผ์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์์์ผํ๋๊น ์งง๊ฒ ์ ๋ฆฌ๋ง ํ๋ ค๊ณ ํ๋ค ์ํค๋ฐฑ๊ณผ ์ธ์ฉ: ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ฉค๋ฒ ๋ณ์(member variable) ๋๋ ๋ฉค๋ฒ ํ๋๋ ํน์ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋ ๋ณ์์ ํ๋์ด๋ฉฐ, ํด๋น ๋ณ์์ ๋ชจ๋ ๋ฉ์๋(๋ฉค๋ฒ ํจ์)์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ํด๋์ค ๊ธฐ๋ฐ ์ธ์ด์์ ์ด๋ค์ ๋ ์ข ๋ฅ๋ก ๊ตฌ๋ณ๋๋ค: ..... ๊ทธ๋ ๋ค.. ์ ์๋ฅผ ์ฝ์ผ๋ฉด ์ ์ .. C++ ๋๋ฌธ์/์๋ฌธ์ ๋ณํ ๋๋ฌด ๋ฐ๋น ์ ๊ธด ํฌ์คํ ๊ธ์ ๋ง๋ฌด๋ฆฌ๋ฅผ ๋ชปํ๊ณ ์๋ค.. ์ผ๋จ ๊ฐ๋ฒผ์ด๊ฑฐ๋ผ๋ ์ฌ๋ ค์ผ ๋ค ์ต์ธํ ๊ฒ ๊ฐ๋ค 1. std::transform ์ฌ์ฉ 2. std::toupper & std::tolower ์ฌ์ฉ 3. boost::to_upper ์ to_lower ์ฌ์ฉ 1. std::transform ๊ตฌ๊ธ์ "C++ ๋์๋ฌธ์ ๋ณํ" ์ด๋ผ๊ณ ๊ฒ์ํ๋ฉด ์๋ง ๊ฐ์ฅ ๋จผ์ ๋ณด์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง ์์๊น ์ถ๋ค ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ณด๊ธฐ์ ์ cppreference์ ์๋ ํจ์ ํํ๋ฅผ ๋จผ์ ๋ณด๊ฒ ๋ค * ํค๋ #include ํค๋๋ ์๋ ๊ณ ,, * ํจ์ ์ํ(?) template OutputIt transform( InputIt first1, Inpu.. C++ Function Object (ํจ์ ๊ฐ์ฒด)๋ฅผ ์์๋ณด์ Lamda (๋๋ค) ํฌ์คํ ์ ํ๊ธฐ ์ํด ๊ณต๋ถํ๋ ์ค,, ์ด์ํ๊ฒ ๊ธ์ด ์์จ์ก๋ค. ๊ธฐ์ด ์์ด ์ฌ์ฉํ ๋ ค๊ณ ํ๋๊น ๊ทธ๋ฐ๊ฒ ๊ฐ์์ ํจ์ ๊ฐ์ฒด์ ๋ํด ๋จผ์ ๊ณต๋ถ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค 1. ํจ์ ํธ์ถ ์ฐ์ฐ์ ํจ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ ์ ์, ํจ์ ํธ์ถ ์ฐ์ฐ์๋ฅผ ๋ด๋ณด๊ฒ ๋ค ์์ฃผ์์ฃผ ๊ฐ๋จํ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค #include #include using namespace std; int myPlus(int num1, int num2) { return num1+num2; } int main(void) { int num1 = 10; int num2 = 20; cout C++ std::map์ ์ฌ์ฉํด๋ณด์ C ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋๋ผ๋๊ฒ ํ๋ ์๋ค ์ ๋ง,, ์๋ฃ๊ตฌ์กฐ ๊ด๋ฆฌํ๊ธฐ ํ๋ค๋ค๋ผ๋๊ฑฐ๋ค (๋๋ง ๊ทธ๋ด์ง๋ ๋ชจ๋ฅธ๋ค) ๊ทธ๋์ C++์์ STL์ด ์ ๊ณตํ๋ ์ฌ๋ฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋๋ฌด ํธ๋ฆฌํ๋ค cf) STL (Standard Template Library) ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, std:: namespace๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๋ฉด ๋๋ค ํ์ง๋ง ํ ๋๊ฐ ์ฌ์ฉํ ์๋ก, ์์๊ฑฐ ํ๋๋ ํท๊ฐ๋ ค์ ์ ๋ฆฌํ๊ธฐ๋ก ํ๋ค - map ์ ์ ๋ฐฉ๋ฒ - map ์์ ์ฝ์ - map ์์ ๊ฒ์ - map ์์ ์ญ์ - map ์ํ - map ํฌ๊ธฐ ๊ตฌํ๊ธฐ 0. map์ด ๋ญ๊ฐ์? ์ํค๋ฐฑ๊ณผ: ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์, map์ ๊ณ ์ฐจ ํจ์๋ก์ ์ ํด์ง ํจ์๋ฅผ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ์ ์ฉ(apply)ํ์ฌ ๊ทธ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ ๋ฌํ๋ค. KEY์ VALUE ํํ๋ก ๋์ด์.. C++ ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๋ฅผ ์์๋ณด์ ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์๋ ๋ง์ด ๋ค์ด๋ณผ ์ฉ์ด์ด๋ค. ์ง์ญ๋ณ์๋ ํจ์ ์์์ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ ๋ณ์์ด๊ณ , ์ ์ญ ๋ณ์๋ ์ง์ญ๋ณ์์ ๋ค๋ฅด๊ฒ ์ ์ฒด์์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ๋ก ๋ฐ์๋ค์ธ ๋ค๋ฉด, ๊ฐ๋จํ๊ฒ ์ดํด๊ฐ ๊ฐ๋ฅํ๋ค ์ค์ ์ฝ๋์์๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ง ์๋ค. ๊ฐ๋จํ ์์๋ฅผ ๋ค์ด๋ณธ๋ค๋ฉด string globalVar; void test() { string localVar; } ์์น๋ง ๋ฐ๋๋ค๊ณ ์๊ฐํด๋ ๊ด์ฐฎ์ ์ ๋์ด๋ค. (๋ฌผ๋ก ๋ฌธ๋ฒ์ด ์ถ๊ฐ๋ ์๋ ์๋ค.) ๊ทธ๋ฌ๋ฉด ์ ์ (Static) ๋ณ์๋ ๋ฌด์์ธ์ง, ์ ์ญ๋ณ์๋ ์ฐจ์ด๊ฐ ๋ญ์ง ์์๋ณด๋ ค๊ณ ํ๋ค. (์ง์ญ๋ณ์๋ ๋ฐ๋ก ์ ๋ฆฌํ์ง ์์๋ ๋ ๊ฒ ๊ฐ์์ ํจ์ฐ ๐) ๊ฐ๋ ์ ๋ํ ์ค๋ช ์ ์๋์ ์์ธํ ์ ์๊ฑฐ๊ณ , ๊ธํ ๋ถ๋ค์ ์ํด ์ด๋ป๊ฒ ์ฐ๋์ง๋ง ๋จผ์ ์ ๋ฆฌํ์๋ฉด 1. ์ ์ญ ๋ณ์ ์ฌ์ฉ extern strin.. ์ด์ 1 2 ๋ค์