![(c++17) decltype, ๋ก ์คํธ๋ง ๋ฆฌํฐ๋ด, static, const, extern, mutable, constexpr, ํ์
์จ๋ฆฌ์ด์ค, ์ค์ฝํ, ๋ ํผ๋ฐ์ค, ์ดํธ๋ฆฌํํธ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMrGkR%2FbtsBQTwYgg7%2FsUeQ9gzKwFbbDdsJTzwjwk%2Fimg.png)
1. decltype ํค์๋ decltype ํค์๋๋ ์ธ์๋ก ์ง์ ํ ํํ์์ ํ์ ์ ์์๋ธ๋ค. int x = 123; decltype(x) y = 456; ์ด๋ ๊ฒ ์์ฑํ๋ฉด ์ปดํ์ผ๋ฌ๋ y์ ํ์ ์ด x์ ํ์ ์ธ int๋ผ๊ณ ์ถ๋ก ํ๋ค. decltype์ ๋ ํผ๋ฐ์ค๋ const์ง์ ์๋ฅผ ์ญ์ ํ์ง ์๋๋ค๋ ์ ์์ auto์ ๋ค๋ฅด๋ค. ํ ํ๋ฆฟ์ ์ฌ์ฉํ ๋ ์๋นํ ๊ฐ๋ ฅํ ํจ๊ณผ๋ฅผ ๋ฐํํ๋ค. 2. ๋ก ์คํธ๋ง ๋ฆฌํฐ๋ด(raw string liternal) ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ ์์ฑํ ์คํธ๋ง ๋ฆฌํฐ๋๋ก์, ๊ทธ ์์ ๋ด๊ธด ์ธ์ฉ๋ถํธ๋ฅผ ์ด์ค์ผ์ดํ ์คํ์ค๋ก ํํํ ํ์๊ฐ ์๊ณ , \t, \n๊ฐ์ ์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ์ผ๋ฐ ํ ์คํธ๋ก ์ทจ๊ธํ๋ค. ๋ฌธ๋ฒ: R " ( ) " const char* str = R"(Hello "Pinko")" ; 3. stati..
![(c++17) ์ ์ฒ๋ฆฌ ์ง์์, if-switch ์ด๋์
๋ผ์ด์ , __func__, ๊ตฌ์กฐ์ ๋ฐ์ธ๋](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5HRlo%2FbtsBUzxJyOY%2F8iW6iIWN2dQMkVHyO9jiGk%2Fimg.png)
1. ์ ์ฒ๋ฆฌ ์ง์์ C++๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ฅผ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ง๋๋ ๋น๋(build)์์ ์ ์ธ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉฐ, ์ ์ฒ๋ฆฌ ์ง์์(directive)๋ ์ ์ฒ๋ฆฌ๊ธฐ์ ์ ๋ฌํ ์ฌํญ์ ํํํ๋ฉฐ, '#' ๋ฌธ์๋ก ์์ํ๋ค. ๋น๋ ์์ : ์ ์ฒ๋ฆฌ(Preprocess) -> ์ปดํ์ผ(complie) -> ๋งํฌ(link) 2. main ( ) ํจ์ main ํจ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ง ์๊ฑฐ๋, ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋๋ก ์์ฑํ ์ ์๋ค. int main (int argc, char* argv[]) - argc: ํ๋ก๊ทธ๋จ์ ์ ๋ฌํ ์ธ์ ๊ฐ์ - argv[]: ์ ๋ฌํ ์ธ์์ ๊ฐ์ ๋ด๋ ๋ฐฐ์ด - argv[0]์๋ ํ๋ก๊ทธ๋จ ์ด๋ฆ์ด ๋ด๊น. * ์ฃผ์: ์ค์ ๋งค๊ฐ๋ณ์๋ ์ธ๋ฑ์ค 1๋ถํฐ ์์ํ๋ค. 3. (C++17) std::byte c++17 ์ด์ ์๋ ..
![[C++] ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ(์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++ , Chapter 27 ์ ๋ฆฌ )](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba5nGB%2FbtsBMV9WEn1%2FTLJxy1y9c7W7VFmWaMdpcK%2Fimg.png)
์๋ ํ์ธ์. ํํฌ์ฝ๋ฅ์ ๋๋ค. ์ค๋์ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฆฌ ๋ด์ฉ์ ๋๋ค. ๊ธด๊ธ ์ฃผ์ ํด์ฃผ์ธ์. ใ ใ ;; ์ ๊ฐ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ ์ด ๋ถ์กฑํด์ ์ ๋ฌด ์ค ๋ํ์์ ์ดํด ๋ชปํ ์ ์ด ๋ช ๋ฒ ์์ด์ ํ ๋ฒ ์ซ ์ ๋ฆฌ ํด๋ณด์์ต๋๋ค. * ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ - ํ๋ก์ธ์ ์ ๋์ด ์ฌ๋ฌ ๊ฐ ์ฅ์ฐฉ๋ ์ปดํจํฐ ์์คํ ์ ์ค์ํ ๊ธฐ๋ฒ. - ์์คํ ์ ์๋ ์ฌ๋ฌ ํ๋ก์ธ์ ์ ๋์ ๋ณ๋ ฌ๋ก ์ฌ์ฉ๊ฐ๋ฅ. * ์์คํ ์ ํ๋ก์ธ์ ์ ๋์ด ์ฅ์ฐฉ๋๋ ๋ฐฉ์์ ๋ค์ํจ. 1. ๋ ๋ฆฝ์ ์ธ cpu center processor unit๋ฅผ ๋ด์ ํ๋ก์ธ์ ์นฉ์ด ์ฌ๋ฌ ๊ฐ ๋ฌ๋ฆฌ๋ ๋ฐฉ์. 2. ํ ํ๋ก์ธ์ ์นฉ ์์ ์ฝ์ดcore๋ผ ๋ถ๋ฅด๋ ๋ ๋ฆฝ์ ์ธ cpu๊ฐ ์ฌ๋ฌ๊ฐ ์๋ ๋ฐฉ์. 3. ์ ๋๊ฐ๋ฅผ ํผํฉํ๋ ๋ฐฉ์ - ์ ์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ ๋ฌ๋ฆฐ ํ๋ก์ธ์๋ฅผ - ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์ multi..
![[c++]'์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++17'์ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌ(ing...)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqIXyZ%2FbtsBQx2eGiD%2F5PC76F0JjSBNlZebDw0ky1%2Fimg.png)
1. ํจ์ ๋งค๊ฐ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ ์ ์๋ค. template class Pinko { ... } - optional ์ ์ ์๋ผ ์์ผ๋ฉฐ, ์ด๋ค ํ์ ์ ๊ฐ์ด ์๊ฑฐ๋ ์์ ์ ์๋ ๊ฒ์ ํํํ๋ค. 2. ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ก ํ ํ๋ฆฟ์ ๋ฐ์ผ๋ ค๋ฉด ํ ํ๋ฆฟ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์(template template parameter)๋ผ๋ ํน์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. - ํ ํ๋ฆฟ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ์์ ์ผ๋ฐ ํจ์์ ๋งค๊ฐ๋ณ์์ ํจ์ ํฌ์ธํฐ๋ฅผ ์ง์ ํ๋ ๋ฐฉ์๊ณผ ๋น์ทํ๋ค. - ์ ์ํ ์ปจํ ์ด๋(ํ ํ๋ฆฟ ์ ์ธ๋ถ: templateclass vector)๋ฅผ ํด๋์ค ์ด๋ฆ(vector)์ ๋งค๊ฐ๋ณ์ ์ด๋ฆ (Contatiner)์ผ๋ก ๋ฐ๊พผ๋ค. template class vector{}; tmeplate class ..
![[C++] ์ ๋ค๋ฆญ ์๊ณ ๋ฆฌ์ฆ ๋ชจ์](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd5BVw%2FbtsBHtlT8NL%2FzPIJg86YasPmDmEkxMiea1%2Fimg.png)
์ ๋ค๋ฆญ ์๊ณ ๋ฆฌ์ฆ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ์๊ณ ๋ฆฌ์ฆ์ ํจ์ ํ ํ๋ฆฟ์ผ๋ก ๊ตฌํ๋ผ ์์ด์ ๋ค์ํ ํ์ ์ ์ปจํ ์ด๋ค์ ์ ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์ ์ ๋ค๋ฆญ ์๊ณ ๋ฆฌ์ฆ์ ๊ณง๋ฐ๋ก ์ปจํ ์ด๋์ ์ ์ฉํ ์ ์๋ค๋ ์ ์ ์ฃผ์ํ๋ค. ๋๋ถ๋ถ ๋ฐ๋ณต์(์ดํฐ๋ ์ดํฐiterator)๋ผ ๋ถ๋ฅด๋ ์ค๊ฐ ๋งค์ฒด๋ฅผ ๊ฑฐ์น๋ค. โป ์ดํฐ๋ ์ดํฐ begin( ), end( ) ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ๋ง์ง๋ง ํญ๋ชฉ์ ๋ฐ๋ก ๋ค์ ์์๊น์ง ์์ฐจ์ ์ผ๋ก(์ ๋ฐฉํฅ์ผ๋ก) ํ์ํ๋ non-const ๋ฐ๋ณต์๋ฅผ ๋ฆฌํดํ๋ค. cbegin( ), cend( ) ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ๋ง์ง๋ง ํญ๋ชฉ์ ๋ฐ๋ก ๋ค์ ์์๊น์ง ์์ฐจ์ ์ผ๋ก(์ ๋ฐฉํฅ์ผ๋ก) ํ์ํ๋ const ๋ฐ๋ณต์๋ฅผ ๋ฆฌํดํ๋ค. rbegin( ), rend( ) ๋ง์ง๋ง ์์๋ถํฐ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ๋ฐ๋ก ๋ค์ ์์๊น์ง ์์ฐจ์ ์ผ๋ก(์ญ๋ฐฉํฅ์ผ๋ก) ํ์ํ๋ n..
![[C++] std::string_view ํด๋์ค](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZHxe9%2FbtsBUBoMzdj%2FZOBjyFwMRpY7XrjEphm7iK%2Fimg.png)
C++17์ด์ ์๋ ์ฝ๊ธฐ ์ ์ฉ ์คํธ๋ง์ ๋ฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์ ํ์ ์ ์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์๋ค. const char*๋ก ์ง์ ํ๋ฉด std::string์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ์์ c_str( )๋ data( )๋ฅผ ์ด์ฉํ์ฌ string์ const char*๋ก ๋ณํํด์ ํธ์ถํด์ผ ํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด std::string์ ๊ฐ์ฒด์งํฅ ์์ฑ๊ณผ ์ฌ๊ธฐ์ ์ ๊ณตํ๋ ํฌํผ ๋ฉ์๋๋ฅผ ์ ๋๋ก ํ์ฉํ ์ ์๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ C++17๋ถํฐ ์ถ๊ฐ๋ std::string_view๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. std::string_view - ํค๋: - ํด๋์ค ํ ํ๋ฆฟ: std::base_string_view - ์ถ๊ฐ ๋ฉ์๋: remove_prefix(size_t), remove_suffix(size_t) → ์ง์ ํ ์คํ์ ๋งํผ ์คํธ๋ง์..
![[C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ํ๋กํ ํ์
& ํ๊ณ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdfu4zG%2FbtsBUKMMLpW%2FmkyB95nsJrB09ltb3SmwrK%2Fimg.png)
์ข ๋ฅ ์ฐ์ฐ์ ํ๋กํ ํ์ ์ดํญ ์ฐ์ ์ฐ์ฐ์ operator+ operator- operator* operator/ operator% T operatorโ ( const T&, const T& ) ; ๋จํญ ์ฐ์ ๋ฐ ๋นํธ ์ฐ์ฐ์ operator+ operator- operator~ T operatorโ ( ) const ; ์ ํ, ํํ (์ฆ๊ฐ,๊ฐ์) operator++ operator-- T& operatorโ ( ); T& operatorโ ( int ); ๋์ ์ฐ์ฐ์ operator = T& operatorโ ( const T& ); ์ถ์ฝ ์ฐ์ ๋์ ์ฐ์ฐ์ operator+= operator-= operator*= operator/= operator%= T& operatorโ ( const T& ); T&..
![(์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++/ ๊ฐ์ 4ํ) - I/O ์
์ถ๋ ฅ ์์ ๋ถ์](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FezVBCY%2FbtsBT4rcPkM%2FkUKng21RJB9Y2kY9uNIF2k%2Fimg.png)
C++์์๋ ํํ ์คํธ๋ฆผ์ ์ถ๋ฐ์ง์ ๋ชฉ์ ์ง๋ก ์ฝ์, ํ์ผ, ์คํธ๋ง์ ์ฌ์ฉํฉ๋๋ค. โป ํ์ผ ๋์ ๋ํ๋ด๋ EOF(end of file)์ ์ ๋์ค์ ๋ฆฌ๋ ์ค์์๋ Ctrl+D๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ฐ์์๋ Ctrl+Z๋ฅผ ์ฌ์ฉํฉ๋๋ค. 1. ์ถ๋ ฅ ์คํธ๋ฆผ์์ ์ ๊ณตํ๋ ๋ฉ์๋ ๋ํ์ ์ธ cout์ ๋นผ๊ณ ์ ๋ฆฌํ์ต๋๋ค. cin ์ ๋ ฅ ์คํธ๋ฆผ. '์ ๋ ฅ ์ฝ์'์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค. cout ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ์ถ๋ ฅ ์คํธ๋ฆผ. ๋ฐ์ดํฐ๋ฅผ '์ถ๋ ฅ ์ฝ์'์ ์ด๋ค. cerr ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ถ๋ ฅ ์คํธ๋ฆผ. ๋ฐ์ดํธ๋ฅผ '์๋ฌ ์ฝ์'์ ์จ๋ค. clog ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ cerr โป ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ฐจ์ด์ ์ฅ์ ์? ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ์คํธ๋ฆผ์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ์ ์ ์ฅํ๋ค๊ฐ ๋ธ๋ก ๋จ์๋ก ๋ชฉ์ ์ง๋ก ๋ณด๋ด๊ณ , ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ..
![[C++] ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1IbCm%2FbtsBJhrScsi%2FcdjWbeHK6YHc9dfB00KPJ0%2Fimg.png)
ใ์ถ์ฒ. ์์ํ์! C++17 ํ๋ก๊ทธ๋๋ฐ (๋ฐํ์ฌ ์ง์)ใ ์์ํ๊ธฐ ์ ๋๊ธฐ์ ๋น๋๊ธฐ์ ๋ํด์ ๋จผ์ ์์๋ณด์! Asynchronous(๋น๋๊ธฐ) Synchronous(๋๊ธฐ) ๋ฐ์๋ ์ด๋ ค์ ๋ณด์ด๋ ๋๊ธฐ, ๋น๋๊ธฐ ์ผ๋จ ๋ง์ ํ ์ ์์ด์ผ ํ๋.. ๋ฒ์ญ๊ธฐ์ ๋๋ ค ์ฝ์ด์ฃผ๋๋ฐ๋ก ํ ๋ฒ ์ ์ด๋ณด๊ฒ ์ต๋๋ค. Synchronous-> siNGkrษnษs(์จ-์ธ!ํฌ๋ก๋์ค) Asynchronous->ฤหsiNGkrษnษs(์์ด ์จ-์ธ!ํฌ๋ก๋์ค) ์ด๋ฐ์์ผ๋ก ๋ฐ์ํด์ฃผ๊ณ ์์ต๋๋ค. ์์ ๋ก์๋ค.. ๋ฉด์ ์์ ๋ฌผ์ด๋ณด๋ฉด ์์๋ฃ๊ธด ํด์ผํ๋๊น (T_T)/ ์ด์ ์ด ๋์ ์ฐจ์ด์ ๊ณผ ์ง๋ ๋ป์ ์์๋ณด์! ๋๋ณด๊ธฐ ๋๋ณด๊ธฐ ๋๋ณด๊ธฐ โ Asynchronous(๋น๋๊ธฐ) : ์์ ์ ์์ํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์ ์ฝ๊ฒ ์ด์ผ๊ธฐ ํ๋ฉด, ๊ผญ ํ ์ค ํ ์ค ์์๋๋ก ์คํ๋..
![(c++) ์กฐ๊ฑด ๋ณ์(Conditional Variable)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUssFn%2FbtsBT0WDQTl%2FtWCEVmBVpwigBkG3fwBThK%2Fimg.png)
ใ์ถ์ฒ. ์์ํ์! C++17 ํ๋ก๊ทธ๋๋ฐ (๋ฐํ์ฌ ์ง์)ใ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ์ค๋ ๋๋ผ ํ๋๋ผ๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค๋ ๋์ ์ ๋ฌํ ์ ๋ณด๊ฐ ์๊ธฐ ๋ง๋ จ์ด๋ค. ์ ๋ฌํ๋ ๋ฐฉ๋ฒ ์ค ์ฐ๋ฆฌ๊ฐ ๊ณต๋ถํ ๋ฐฉ๋ฒ์ '์กฐ๊ฑด๋ณ์(Conditional Variable)' ๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธฐ๋ฅ์ด๋ค. ์กฐ๊ฑด๋ณ์๋ ์ฃผ๋ก ๊ฒ์์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ ๋ฌ๋ฆฌ๊ธฐ ์ํฉ์ฒ๋ผ ๋ชจ๋ ์ ์๊ฐ ์ถ๋ฐ์ ์์ ๋๊ธฐํ ์ํ์์ ์ด์๋ฆฌ์ ํจ๊ป ์ถ๋ฐํ๋๋ก ์ค๋ ๋ ๋ชจ๋ ๋๊ธฐ ์ํ๋ก ๋ง๋ค๊ณ ๋์์ ๊ณต๋ ๊ฒฝ์์ ์ํํ๋ค. ์กฐ๊ฑด๋ณ์๋ ๋จ์ง ๋ณ์๋ฅผ ํตํด ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ๋ฅ๋ง์ ์ ๊ณตํ ๋ฟ ์์ฒด ์ ๊ธ ๊ธฐ๋ฅ์ด ์๋ค. ๋ฐ๋ผ์ ๋ค์์ ์ค๋ ๋์ ์ํด ์คํ๋๋ ์์ ์ด ์์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ณ๋ ๋ฎคํ ์ค๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ์ฅ ์ค์ํ ํจ์๋ wait(), notify_all() ํจ์์ด๋ค. ์กฐ๊ฑด๋ณ..