ใ # Study Modern C++:open_book:
- Study Plan
- 1์ฃผ์ฐจ
- 2์ฃผ์ฐจ
- 3์ฃผ์ฐจ
- 4์ฃผ์ฐจ
- 5์ฃผ์ฐจ
- 6์ฃผ์ฐจ
- 7์ฃผ์ฐจ
- 8์ฃผ์ฐจ
- 9์ฃผ์ฐจ
- 10์ฃผ์ฐจ
- 11์ฃผ์ฐจ
- 12์ฃผ์ฐจ
- 13์ฃผ์ฐจ
- 14์ฃผ์ฐจ
- 15์ฃผ์ฐจ
- 16์ฃผ์ฐจ
- 17์ฃผ์ฐจ
- 18์ฃผ์ฐจ
- 19์ฃผ์ฐจ
- 20์ฃผ์ฐจ
- 21์ฃผ์ฐจ
- 22์ฃผ์ฐจ
- 23์ฃผ์ฐจ
- 24์ฃผ์ฐจ
- 25์ฃผ์ฐจ
- 26์ฃผ์ฐจ
- 27์ฃผ์ฐจ
- ํ์ํ ๊ฒ๋ง ๊ณจ๋ผ ๋ฐฐ์ฐ๋ ๋ชจ๋ C++
- ์น์ด๋จน๋ C++
์ฑํฐ 1๊ฐ๋น 1 or 2์ฃผ ๊ฐ ์ฝ์ด์จ ํ, ์คํฐ๋ ์๊ฐ์ ๊ฐ๋จํ ๋ฆฌ๋ทฐ ๋ฐ ์ฐ์ต ๋ฌธ์ ํ์ดํ๋ก์ ํธ ๊ธฐ๋ฐ์ผ๋ก ์งํ์งํ ์๊ฐ์ ์ผ์์ผ ์ค์ 8์์งํ ์๊ฐ์ ๋ชฉ์์ผ ์คํ 8์- ์ผ์ ์ด ๋ถ๊ฐ๋ฅํ๊ฑฐ๋, ๋ณ๋์ด ํ์ํ ๊ฒฝ์ฐ, ์นดํก๋ฐฉ์ ๋ด์ฉ ๊ณต์
- ์งํ์ ๋ฐ๋ผ ๋ด์ฉ์ ์ ๋ฐ์ดํธ ์์
- ์ ์ฒด ์งํ ์ผ์ ์กฐ์
- 2์ฃผ์ฐจ ๋ฆฌ๋ทฐ ์์ ๋ด์ฉ
- 1์ฅ C++ ๊ธฐ์ด
- 2์ฅ ํด๋์ค
- 2์ฃผ์ฐจ ๋ฆฌ๋ทฐ ์์ ๋ด์ฉ
- 1์ฅ C++ ๊ธฐ์ด
- 1.1 ์์ ์ฒซ C++ ํ๋ก๊ทธ๋จ
namespace std
๋ฅผ ๊ผญ ์ธ ํ์๋ ์์ง๋ง, ์จ ์ฃผ๋ ๊ฒ์ด ๋ค๋ฅธ ์ฌ๋์ด ์ฝ๋๋ฅผ ๋ณผ ๋ ์ดํด๊ฐ ์ฝ๋ค.- ์
, ์ถ๋ ฅ ๊ธฐ๋ฅ์ C++์ ํต์ฌ ์ธ์ด์ ์ผ๋ถ๊ฐ ์๋ (๋ช
์์ ์ผ๋ก
iostream
์include
์์ผ์ค์ผํ๋ค) - ๋ชจ๋ C++ ํ๋ก๊ทธ๋จ์
main
ํจ์์ ํธ์ถ๋ก ์์๋๋ฉฐ,return
์ผ๋ก ํ๋์ ์ ์๋ฅผ ๋๋ ค์ฃผ๋๋ฐ 0์ ์ ์ ์ข ๋ฃ๋ฅผ ์๋ฏธํ๋ค. - ์ค๊ดํธ({})๋ ์ฌ๋ฌ ์ฝ๋ ๋ฌธ์ฅ์ ํ๋์ ์ฝ๋ ๋ธ๋ก์ผ๋ก ๋ฌถ๋ ์ญํ ์ ํ๋ค. (๋ณตํฉ๋ฌธ)
std::
๋ ๊ทธ ๋ค์์ ๋์ค๋ ์ด๋ฆ์ด ํ์คnamespace
์ ํฌํจ๋๋ค๋ ๋ป (namespace
๋ ์ด๋ฆ์ ๊ด๋ฆฌํ๋ ์๋จ)- ๋ฌธ์์ด ์์(๋ฌธ์์ด ๋ฆฌํฐ๋ด)์ ํฐ๋ฐ์ดํ("")๋ก ๊ฐ์ผ๋ค. ('a' != "a")
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ์ ์ผํ ๊ธธ์ ์ค์ ๋ก ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ด๋ค.
- 1.2 ๋ณ์
- C++์ ๊ฐ ํ์ ์ธ์ด(strongly typed language)
- ๋ณ์๋ ํ์ ์ด๋ฆ ๋ค์์ ๋ณ์ ์ด๋ฆ์ด ์ค๋ ํํ์ ๋ฌธ์ฅ์ผ๋ก ์ ์ธ
- ๋ณ์ ์ด๋ฆ ๋ค์์ ๋ณ์์ ์ด๊ธฐํ ๊ตฌ๋ฌธ์ ๋ ์ ์์ผ๋ฉฐ, ์ผํ๋ฅผ ์ด์ฉํด์ ๋ณ์ ์ด๋ฆ์ ์ฌ๋ฌ ๊ฐ ๋์ดํ ์๋ ์๋ค.
- ๊ฐ ๋ด์ฅ ํ์๋ค์ ์ปดํ์ผ๋ฌ ๋ณ๋ก ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค. (์ปดํ์ผ๋ฌ์ ์๊ด ์์ด ๊ฐ๊ณ ์ถ๋ค๋ฉด,
int8_t
,uint16_t
๋ฑ์ ์ฐ์) - 'a' + 7 = 'h'๊ฐ ๋์ง๋ง, ์ฝ๋ ์ฌ๋์ด ํ๊ฐ๋ ์ ์์ผ๋ฏ๋ก ์ ๋ ์ฐ์ง ๋ง์.
- ๋ฌธ์์ด์ ๋ค๋ฃฐ ๋๋ ํค๋๋ฅผ ์ถ๊ฐํ์.
- <C++14> ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ string์ผ๋ก ์ทจ๊ธํ๋ ค๋ฉด ์ ๋ฏธ์ฌ s๋ฅผ ๋ถ์ฌ์ผํ๋ค. ("Hello" --> char [], "Hello"s --> string)
- ๋ณ์๋ ์ต๋ํ ๋ฆ๊ฒ ์ ์ธํด๋ผ. ๋ณดํต ์ฒ์ ์ฌ์ฉํ๊ธฐ ์ง์ ์ ์ ์ธํ๋ ๊ฒ์ด ์ข๋ค, ๋ณ์๋ฅผ ์ด๊ธฐํํ ์ ์๋ ์ง์ ์ดํ์ฌ์ผ๋ง ํ๋ค.
- ์์ ๋ณ์๋ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ ๋์ด์ผํ๋ฉฐ, ๋ณ์๊ฐ ์ฌ์ฉ๋๋ ๊ณณ ์ด๋๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฆฌํฐ๋ด ๊ฐ์ ๋ถ๋ ์ ๋ฏธ์ฌ์ ๋ฐ๋ผ, ํ์์ด ์ง์ ๋๋ค. (u, l, f, ul, l ๋ฑ)
- <C++14> ์ซ์๋ค ์ฌ์ด์ ๊ฐ๋ ์ฑ์ ์ํด ์ดํฌ์คํธ๋กํผ๋ฅผ ์ฝ์ ๊ฐ๋ฅ (')
- ์ค๊ดํธ๋ก ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ๋ฉด, narrowing conversion์ ํ์ฉํ์ง ์์ (์ปดํ์ผ ์ค๋ฅ ๋ฐ์)
- ์ข์์ง๋ ์ค๋ฅ๊ฐ ์๋ฐฉํฅ์ผ๋ก ๋ฐ์ํ ์๋ ์๋ค.
- ์ ์ญ ๋ณ์๋ ์ฌ์ฉํ์ง ๋ง๋ผ. (์ ์ญ
์์
๋ณ์๋ ํ์ฉ) - ์ง์ญ ๋ณ์๋ {} ๋ธ๋ก์ ํ์ ๋จ. (C++์
GC
๊ฐ ์์ --> {}๋ฅผ ํ์ถํ๋ฉด ์์์ ์ ์ํ ๋ณ์๋ค ๋ค ์ฌ๋ผ์ง)
- 1.3 ์ฐ์ฐ์
- ์ฐ์ฐ์๋ ์ฌ์ฉ์ ์ ์ ํ์์ ๋ํด ์ค๋ณต์ ์ฌ(
overloading
)ํ ์ ์๋ค.(overloading
--> ํจ์ ์ด๋ฆ์ ๊ฐ์ผ๋, ์ ๋ ฅ ์ธ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํจ์๊ฐ ํธ์ถ๋๋ ๊ฒ) - ์ฐ์ฐ์์ ์ฐ์ ์์๊ฐ ๋ถ๋ช ์กด์ฌํ์ง๋ง, ์๋ฌด๋ ๋ชจ๋ฆ (๊ทธ๋ฅ ๊ดํธ๋ฅผ ์ ์น๋ ๊ฒ์ด ์ข๋ค)
- ์ ์ ์ฆ๊ฐ๋ ๋จผ์ ์ฆ๊ฐ ํ
return
, ํ์ ์ฆ๊ฐ๋return
ํ ์ฆ๊ฐ - ์ฃผ์ ์ง์ ์ด ๊ฐ๋ฅํ ๋ฐ์ดํฐ ํญ๋ชฉ์ C++์์๋
lvalue
๋ผ๊ณ ์ง์นญ - ์ฐ์ ํํ์์์๋ ์ฆ๊ฐ, ๊ฐ์ ์ฐ์ฐ์ ๋์ j+1์ฒ๋ผ ๋ช ์์ ์ผ๋ก ๋ํ๊ฑฐ๋ ๋นผ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
- ํํ์ ์์์ ๊ฐ์ ์์ ํ๋ ๊ฒ์ ์ํํ๋ค, ์์ ์ ๊ฐ๋ณ์ ์ผ๋ก ์ํํ์.
- ์ดํญ ์ฐ์ฐ์ ์ธ์๋ค์ ํ์์ด ๋ค๋ฅด๋ฉด, ๋ ์ค ํ๋ ๋๋ ๋ ๋ค๊ฐ ๊ณตํต์ ํ์์ผ๋ก ๋ณํ๋๋ค. (๊ทธ๋ฅ ์๋์ผ๋ก ํ๋ณํ ํด์ฃผ๋๊ฒ ํธํ ๋๊ฐ ๋ง๋ค)
- ์ผ์ค๋น๊ต (
<=>
) a.k.a. ์ฐ์ฃผ์ ์ฐ์ฐ์ (ufo ์ฐ์ฐ์), a <=> b --> a < b์ธ ๊ฒฝ์ฐ -1, a == b๋ฉด 0, a > b๋ฉด 1์ด ๋์ด- ๊ทธ์น๋ง ๊ทธ๋ฅ a > b, a == b, a < b๋ฅผ ์ฐ์.
- C++๋ not์ด ์๋ค. (not false --> true)
- ๋
ผ๋ฆฌ ํํ์์๋ ๊ผญ
bool
์ ์ฐ์. - ๋ฑํธ ์๋ณ์ ํ์์ด ๋ค๋ฅด๋ฉด ์ฐ๋ณ์ด ์ข๋ณ์ ํ์์ผ๋ก ๋ณํ๋๋ค. (float a = 1.0์ผ๋ก ์ ์ผ๋ฉด, 1.0์ด float์ผ๋ก ๋ณํ๋๋ค.)
- ์ํํธ์จ์ด ์ค๊ณ์ ์ฃผ์ ์์น ์ค ํ๋๋
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ
(์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๊ณ , ๋ณต์ก์ฑ์ด ๊ฐ์ํ๋ค.) - ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ๋ก ์์ฑํ๋ฉด ์๊ทผ ์ ๋ฆฌํ๋ค. (๋ฐฐ์ ๋ฌธ์์ ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ฐฐ์ ์ฐ์ฐ์์ ์ผ์ชฝ์ ์๋ ๋ณ์๋ฟ์ด์ด์ผ ํ๋ค.)
- ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋์ผ ์๋ก, ์ปดํ์ผ๋ฌ๊ฐ ์ต์ ํํ๊ธฐ๋ ์ฝ๋ค.
- ์ฐ์ฐ์๋ ์ฌ์ฉ์ ์ ์ ํ์์ ๋ํด ์ค๋ณต์ ์ฌ(
- 1.4 ํํ์๊ณผ ๋ฌธ์ฅ
if
๋ฌธ์ ๊ฐ ๊ฐ๋๋ ๊ฐ์ ํ๋์ ๋ฒ์๋ฅผ ํ์ฑํ๋ค.- ์ค๊ดํธ๋ฅผ ์ฐ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. (ํ์ค๋ง ์ํ์ ํ๋๋ผ๋)
- ๊ฐ๋ ์ฑ์ ์ํด์ ์ค๊ดํธ ์์ ๋ฌธ์ฅ์ ๋ค์ฌ์ฐ์.
- <C++17> ์กฐ๊ฑด์์์ ๋ณ์ ์ ์ธ ๊ฐ๋ฅ
- <C++17>
switch-case
๋ฌธ์์ [[fallthrough]]๊ฐ ์ถ๊ฐ๋จ (์๋๋ก ํ๋ฌ๊ฐ๋๋ก ์ค์ ๊ฐ๋ฅ) while
์ ์ ์กฐ๊ฑด ๊ฒ์ฌ ํ ์คํ,do-while
์ ์ ์คํ ํ ์กฐ๊ฑด ๊ฒ์ฌ (do-while
์ ์ต์ 1ํ๋ ์คํ๋๋ค)for
๋ฌธ์ ์ด๊ธฐํ ์ , ์กฐ๊ฑด์, ๋จ๊ณ ์ฐ์ฐ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ- ๋ด์ฅ ํ์์์๋ ++i๋ i++๋ ๋ณ๋ก ์ฐจ์ด๊ฐ ์์ง๋ง, ์ฌ์ฉ์ ์ ์ ํ์์์๋ i++๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ฐ์๋ ๋ณต์ฌ ์ฐ์ฐ์ด ๋๋ฏ๋ก, ++i๋ฅผ ๊ถ์ฅ
- ์ด๊ธฐํ ์ ์๋ ๋ชจ๋ ์ข ๋ฅ์ ํํ์๊ณผ ๋ณ์ ์ ์ธ์ด ๊ฐ๋ฅ, ๋น์๋๊ธฐ๋ ๊ฐ๋ฅ, ๊ฐ์ ํ์์ ๋ณ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ์ธํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- ๋ฃจํ ์์ธ์ ๋ฃจํ ๋ณธ๋ฌธ์์ ์์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ์ง๋ง, ๋น์ฐํ ํ์ง ์์ ๊ฒ์ ๊ถ์ฅ
- <C++11> ๊ตฌ๊ฐ ๊ธฐ๋ฐ
for
๋ฃจํ (for
(int i : ๋ฐฐ์ด)๊ณผ ๊ฐ์ ์์ผ๋ก ์ ๋ ฅํ๋ฉด ๋ฐฐ์ด ๋ด๋ถ์ ๊ฐ์ด i์ ์์ฐจ์ ์ผ๋ก ๋ค์ด๊ฐ๋ค. ) - <C++20> ๊ตฌ๊ฐ ๊ธฐ๋ฐ ๋ฃจํ์ ์์ ์ง์ ์ ์ด๊ธฐํ๋ ๊ฐ๋ฅํ๋ค.
goto
๋ ์ ๋ ์ฐ์ง ๋ง ๊ฒ
- ๋ค์์ฃผ ๊ณํ
- 1์ฅ ๋ง๋ฌด๋ฆฌ ๋ฐ 1์ฅ ์ฐ์ต๋ฌธ์ ํ์ด
- 1.1 ์์ ์ฒซ C++ ํ๋ก๊ทธ๋จ
- 1์ฅ C++ ๊ธฐ์ด
- 1.5 ํจ์
- ๊ฐ ์ ๋ฌ, ์ฐธ์กฐ ์ ๋ฌ ๋ ๊ฐ์ง ๋ฐฉ์
- ๊ฐ ์ ๋ฌ์ ๋ณ์๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉ! (์ค์ ๊ฐ์๋ ์ํฅ ์์)
- ์ฐธ์กฐ ์ ๋ฌ์ ๋ณ์๋ฅผ ์ง์ ์ฌ์ฉ! (์ค์ ๊ฐ์๋ ์ํฅ ์์)
- ํจ์์๋ ๊ธฐ๋ณธ ์ธ์ ๊ฐ์ ์ค์ ํ ์ ์์
- ํํ์ ํ ํ๋ฆฟ์ ์ฃผ์ด์ง ๊ณ์ฐ์ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก ์ ์ฅ๋๋ ์์ ๊น์ง ๋ฏธ๋ฃธ์ผ๋ก์จ ๋ถํ์ํ ๋ณต์ฌ๋ฅผ ๋ฐฉ์งํ๋ค (?????, TODO.)
- ํจ์ ํธ์ถ์ ์ฌ์ค ๊ณต์ง๊ฐ ์๋ (์ด๋ฅผ ๊ณต์ง๋ก ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ์ธ๋ผ์ธํ)
ํจ์ ์ด๋ฆ
,๋งค๊ฐ๋ณ์ ๊ฐ์
,๋งค๊ฐ๋ณ์ ํ์
์ด ํจ์์ ์๋ช ์ด๋ฉฐ, ์ด ๊ฐ์ด ํจ์ ์ค๋ฒ๋ก๋ฉ์ ๊ตฌ๋ถํ๋ ๊ธฐ์ค๊ฐ์ด ๋๋ค.- mainํจ์์๋
argc
,argv
์ 2๊ฐ์ง ์ธ์๋ฅผ ๋ฐ์ ์ ์๋ค.
- 1.6 ์ค๋ฅ ์ฒ๋ฆฌ
assertion
์ ํ๋ก๊ทธ๋๋จธ์ ์ค์๋ฅผ ๊ฒ์ถํ๊ธฐ ์ํจ์ด๋ฉฐ, ํด๋น ๊ตฌ๋ฌธ์ดfalse
์ด๋ฉด ์ฝ๋๊ฐ ์ข ๋ฃassertion
์ ์ฅ์ ์ค ํ๋๋Release
๋ชจ๋๋ก ๋น๋ ์, ๋์ํ์ง ์๋๋ค๋ ๊ฒ- ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ๋
try
,catch
๊ตฌ๋ฌธ์ ํ์ฉํ ์ ์์ - ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ณณ์์
try
- ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋์ํ ๋ถ๋ถ์
catch
์ฌ์ฉ catch
๋ ๋ค์ค์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ ๋ ฅ๋๋ ๊ฐ์ด๋, ์์ธ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ํ ์ ์์- ์์ธ๊ฐ ๋ฐ์ํด๋ ๊ทธ๋ฅ ๋ฌด์ํ๊ณ ์งํํ๊ณ ์ถ๋ค๋ฉด ๋น
catch
๋ฅผ ์ถ๊ฐํ๋ค. static_assert
๋ ์ปดํ์ผ ์์ ์์ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๊ธฐ ์ํจ
- 1.7 ํ์ผ ์
์ถ๋ ฅ
- ํ์ผ ์ ์ถ๋ ฅ ๋ฐ ํ์ผ ์์คํ ๊ด๋ จ ์ ์ถ๋ ฅ์ด ์กด์ฌ
- ํ์ํ ์ํฉ์ ๋ง์ถฐ์ ๊ตฌ๊ธ ๊ฒ์์ ์ ํด์ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ์ผ๋ก ๋ณด์
- 1.8 ๋ฐฐ์ด, ํฌ์ธํฐ, ์ฐธ์กฐ
- ๋ฐฐ์ด์ ์ ์ธ ์์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ค์ผํจ (์ซ์ ๊ฒฝ์ฐ, ๋์ ํ ๋น)
- ๋ฐฐ์ด ์ ๊ทผ ์, ์์ธ์ ์ ํจ์ฑ์ด ์ ๊ฒ๋์ง ์๋๋ค. (C++ Array๋ก ํด๊ฒฐ ๊ฐ๋ฅ)
- ๋์ ํ ๋น ์์ ํฌ์ธํฐ์
new
,delete
๋ฅผ ๊ฐ์ด ์ฌ์ฉํด์ค์ผ ํ๋ค. - ๊ผญ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํด์ ๋ฅผ ํด์ค์ผ๋ง ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ ์ ์์
- ํฌ์ธํฐ๋
๋ฉ๋ชจ๋ฆฌ ์ฃผ์
๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ฅผ ์๋ฏธ - ํฌ์ธํฐ์ ์ด๊ธฐํ๋
nullptr
(C++ 11์ด์) - ํฌ์ธํฐ๋ ๊ฒฐ๊ตญ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก, ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด, ์ฌ๋ฌ ๋ฐฉ๋ฉด์ผ๋ก ์ค์๋ํ ์ ์์
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ ์ปจํ ์ด๋, RAII๋ฅผ ์ด์ฉํ ์บก์ํ, ์ค๋งํธ ํฌ์ธํฐ ๋ฑ์ ์ฌ์ฉํ๋ฉด ์ข๋ค.
unique_ptr
์ ๊ฐ์ฒด์ ๋ํ ์ ์ผํ ์์ ๊ถ์ ๋ํ๋ด๋ ํฌ์ธํฐ (๋์ผํ ๊ฐ์ฒด์ ๋ํด ์ฌ๋ฌ ๊ฐ ์์ฑ ๋ถ๊ฐ)shared_ptr
์ ๊ณต์ ํฌ์ธํฐ๋ฅผ ์๋ฏธํ๋ฉฐ, ์ผ๋ฐ์ ์ธ ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉ์ด ๊ฐ๋ฅ, ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฐ์ ์ ์ํํ ์ ์์ผ๋ฉฐ,make_shared
๋ฅผ ์ด์ฉํด์ ์์ฑํ๋ ๊ฒ์ด ์์ ์ ์ด๊ณ ์ข๋ค.- ์ฐธ์กฐ๋ ํด๋น ๋ณ์์ ๋ํ ๋ณ๋ช ์ ์์ฑํ๋ ๊ฒ
- ํจ์์์ ์ฐธ์กฐ๋ฅผ Returnํ ๋๋ ์ฃผ์ํ ๊ฒ (์ํ ์ฐธ์กฐ)
vector
๋Python
์list
์ ์ ์ฌํ ์ปจํ ์ด๋valarray
๋ ์ฑ๋ถ๋ณ ์ฐ์ฐ์ ์ง์ํจ, ์ฐ๋๊ฑธ ๋ณธ์ ์ ์์
- 1.9 ์ํํธ์จ์ด ํ๋ก์ ํธ์ ๊ตฌ์กฐํ
- ์ฃผ์ ์์ฑ ์, ์ค์ฒฉ๋ ์ฃผ์ ์๋๋ฏ๋ก ์ฃผ์
- ๋งคํฌ๋ก๋ ๋๋๋ก ํผํ๊ณ , ์์, inline, constexpr ๋ฑ์ ํ์ฉํ ๊ฒ
- ํฌํจ๊ฐ๋๋ฅผ ์ด์ฉํ๋ฉด, ํค๋ ํ์ผ ์ค๋ณต ์ ์๋ฅผ ํผํ ์ ์์ผ๋ฉฐ,
#pragma once
์ ๋นํด ์ด์์ฑ์ด ์ข๊ฒ ์ฌ์ฉํ ์ ์๋ค. - ์กฐ๊ฑด๋ถ ์ปดํ์ผ์ ์ด์ฉํ๋ฉด, ๋๋ฒ๊น
์ํฉ์ ํน๋ณํ ๋ก๊น
์ ์ํํ๋๋ก ํ ์ ์์ผ๋ฉฐ,
Window
,Linux & Unix
์ ๋ง์ถฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ์ ์๋๋ก ํ ์ ์์ผ๋ฉฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์กด์ฌ ์ ๋ฌด๋ฅผ ์ด์ฉํ์ฌ, ์ฝ๋๋ฅผ ๋ค์ํ๊ฒ ์์ฑํ ์ ์๋ค. - ๋ํ, C++์ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ ์ง ์ฌ๋ถ์ ๋ฐ๋ผ, ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- 1.5 ํจ์
- ์งํ ๋ฐฉ์ ๋ณ๊ฒฝ
- ์คํฐ๋ ์๊ฐ ๋ณ๊ฒฝ
$\rightarrow$ ๋ชฉ์์ผ ์คํ 8์ - ์คํฐ๋ ๋ฐฉ์ ๋ณ๊ฒฝ
$\rightarrow$ ํ๋ก์ ํธ ์์ฃผ ์ฝ๋ ์์ฑ - ์คํฐ๋ ์ฐธ๊ณ ๋ฌธ์ ์ถ๊ฐ
$\rightarrow$ ์น์ด๋จน๋ C++ - ๋ค์์ฃผ๊น์ง ๊ฐ์ธ๋ณ๋ก ํ๋ก์ ํธ ์ฃผ์ ์ ํด์ค๊ธฐ
- ์คํฐ๋ ์๊ฐ ๋ณ๊ฒฝ
- ์ฃผ์ ์ ์
- ์ฌํ :
SLAM
์ ๊ฐ๋จํ ๋ง๋ค์ด๋ณผ ์์ (์์์ICP
๋ถํฐ ์งํ,ROS
์ฌ์ฉ ์์ ) - ์๋น : ํ
ํธ๋ฆฌ์ค (Visual Studio ์ฌ์ฉ ์์ -->
MSVC
) - ๋ฒํ : ์ผ๋จ ํจ์ค
- ๋ํ : ์๋ฎฌ๋ ์ดํฐ ์ ์ (ํ๋ก๊ทธ๋จ ๋ฏธ์ )
- ์ค๊ท : ์์ด๋๋ฅผ ์ด์ฉํด์ ๋ํ์ค ๊ฒ์
- ์ฐ์ฑ : ์ค์ ๋๋ก ์ ์ด
- ์ฌํ :
- ๋งค์ฃผ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํ
- ์๋กญ๊ฒ ์๊ฒ๋ ๋ด์ฉ์ ๊ณต์
- ๋ฒํ๋ ๊ฐ์ธ ์ผ์ ์ผ๋ก ํํด (๋์์ค์ค ์ง๋ ์๋ฌธ)
- ์งํํ์ ์ฝ๋ ๊ผญ ์ฌ๋ ค์ฃผ์ธ์!
- ์ค๊ท๋
- ํ์ ๋ํ์ค ์์ ์ ๋ฉ๋ด๊น์ง ๊ตฌํ (Terminal ํ๊ฒฝ Only)
- Review ํผ๋๋ฐฑ
- ์ค๋ฅ ์ฐพ๊ธฐ ๋ฐ ๋๋ฒ๊น ๋ ์ฉ์ดํ๋๋ก ํด๋์ค ๋ณ๋ก ๋ถ๋ฆฌ (๊ฒ์๋์ ํด๋์ค, ๋ฉ๋ด๋์ ํด๋์ค ๋ฑ)
- while ๋ฌธ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ก์๋จน๊ณ block์ด ์๊ธธ ์ ์๊ธฐ์ ์ง์ํ ๊ฒ
- ์ฃผ์์ผ๋ก ํํํ๋ ๊ฒ ๋ณด๋ค enumerate๋ฅผ ์ด์ฉํด ๊ฐ๋ ์ฑ๊ณผ ์ฝ๋ ํ๋ฆฌํฐ์ ์ ๊ฒฝ์ธ ๊ฒ
- ๋ค์์ฃผ๊น์ง ์ ๋ ฅ์ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ๊ณผ ๊ฒ์ ํ๊ฒฝ ์ธํ ์์
- ๋ํ๋
- ์คํ ์์ค ์ด์ฉํ์ฌ, ํ๋ฉด ์์์ ์ด๋๋ง ๊ฐ๋ฅ (Terminal ํ๊ฒฝ Only)
- ์์ง ํฌ๊ฒ ์งํ ์ฌํญ ์์ด์ ํผ๋๋ฐฑ ๋ฐ๋ก ์์
- ์ฌํ๋
- ์ ๋ฌด๊ฐ ๋ฐ๋น ์ ์์ง ์งํ ์ฌํญ ์์
- ๋ค์์ฃผ๊น์ง๋
ICP
๋ ผ๋ฌธ ๋ณด๊ณ , ์คํ ์์ค ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ ํด๋ณด๊ธฐ
- ์๋น๋
- PPO๋ฅผ ๊ตฌํ?
- ์ฐ์ฑ๋
- Ubuntu 20.04 ์ค์น ๋ฐ
CrazyFile
์กฐ๋ฆฝ ์ค Localization
์Base Station
๊ธฐ๋ฐ์ผ๋ก ์งํ ์์ (LightHouse
)- ๋ค์์ฃผ๊น์ง ํ๊ฒฝ ์ธํ ๋ง์น๊ณ ์ฝ๋ ์์ฑ ์งํ ์์
- Ubuntu 20.04 ์ค์น ๋ฐ
vector
์ ๊ด๋ จ๋ ๊ฐ๋จํ ์ด์ผ๊ธฐ([]
์at
์ ์ฐจ์ด)valgrind
๋ฐsanitizer
๋ฅผ ํตํ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง- ๋ฉ๋ชจ๋ฆฌ
Heap
๋ฐStack
์ ๋ํ ๊ฐ๋จํ ์๊ฐ - ๋ค์์ฃผ ์งํ ์ฌ๋ถ๋ ์์ง ๋ถํ์ค
- ์งํ ๋ฐฉ์ ๋ณ๊ฒฝ
- ์ฝ 10 ~ 15๋ถ ์ ๋ ๋ฐํํ ๋ด์ฉ ์ค๋น
- ์ค๋น ์ํด์ฌ ์, ๋ฒ๊ธ
5000์
- ์ฐ์์ผ๋ก ์ํด์ค์๋ฉด, ๋์ง์ธ (2์ฃผ ์ฐ์์ด๋ฉด
10000์
, 3์ฃผ ์ฐ์์ด๋ฉด15000์
, 4์ฃผ ์ฐ์์ด๋ฉด์คํฐ๋ ํํด
) - ๊ฐ์ธ ์ฌ์ ์์ผ์๋ฉด, ๋ฏธ๋ฆฌ ๋ง์ํด์ฃผ์๊ณ , ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง๋ฉด, ๊ฒฉ์ฃผ๋ก ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
- ์ค๊ท๋
- ์ฝ๋ ์์ฑ ์ถ๊ฐ ์งํ
- ํผ๋๋ฐฑ ๋ด์ฉ ์์ฑ ๋ถํ๋๋ฆฝ๋๋ค.
- ๋ํ๋
๋ฅ๋ฌ๋
๊ด๋ จ ๋ด์ฉ ์ธ๋ฏธ๋ ์งํ- ์ค๋ช ๋ณด์์ด ํ์ํ ๊ฒ ๊ฐ์
- ์ฐ์ฑ๋
- ์ถํ ์งํํ ํ๋ก์ ํธ ๊ด๋ จ ๋ด์ฉ ์ค๋ช
CAN
ํต์ ๊ธฐ๋ฐ์ ๋ณด์ ๊ด๋ จ ํ๋ก์ ํธ ์งํ ์์
- ์ฌํ๋
C++
์Thread
๋ฑ์ ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฐฉ๋ฒ ์๊ฐ ์์ - ๊ฐ๋จํ
Thread
์Process
์ ์ฐจ์ด ์ค๋ช Thread
,Mutex
,Future
,Promise
๋ฑ์ ๋ํด ์๊ฐ ์์
- ๋ํ๋
ORB-SLAM3
์ค์น ๋ฐ ์คํ- ์กฐ๊ธ ๋ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์ค์ค๋ก ์์๊ฐ๋ ๊ธฐํ๋ฅผ ๊ฐ์ก์ผ๋ฉด ์ข๊ฒ ์
- ์๋น๋
- ๋ฌธ์ ๋ฅผ ๋๊น์ง ํธ๋ ์ฐ์ต์ ํ ๊ฒ
CS
๊ณต๋ถ๋ ํํํ ํ ๊ฒ
- ์ฌํ๋
- Class ๊ตฌ์กฐํ ๋ฐ ๋ฉ์๋ ๊ตฌํ ๊ด๋ จ ์ค๋ช
- ๋๋จธ์ง ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ๊ด๋ จ ๋ด์ฉ ์ค๋ช ์์
- ์๋น๋
Dynamic Programming
- ๋ํ๋
Unitree Go1
- ์ฌํ๋
C++ Operator Overloading
- ์ฐ์ฑ๋
- ์ค๋น ์ํจ (
5,000์
๊ฐ์ฌํฉ๋๋ค)
- ์ค๋น ์ํจ (
- ์๋น๋
5000์
- ๋ํ๋
Visual Odometry
์ฝ๋ ๋ฆฌ๋ทฐ
- ์ฌํ๋
- ์์ ์์ด ์ฝ๋ ์์ฑํ๋ ๋ฐฉ๋ฒ (๋ค์์ฃผ์ ์์ ๋ด์ฉ ์งํ ์์ )
- ์ฐ์ฑ๋
Simulink
๋ก ๊ฐ๋จํSuspension
๋ชจ๋ธ ๊ตฌํ
- ์ค๊ท๋
D435
+yolov5
์ ์ฉํด์Object Detection
ํ, ํด๋น ๊ฐ์ฒด ์์น๋ก์ Goal ์ฐพ๊ธฐ
- ์ฌํ๋
- ์์ ๊ด๋ จ ๋ด์ฉ ์ค๋ช
Rule of Three / Five / Zero
์ค๋ชistream
,ostream
,ifstream
,ofstream
,stringstream
๊ด๋ จ ๋ด์ฉ ์ค๋ช
- ์๋น๋ (์์๋๋ฐ..?
10000์?
)Dijkstra ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ
์ค๋ช / ์์ ๋ฌธ์ (https://rndpqls999.tistory.com/214)Deep copy
&Shallow copy
์ค๋ช (https://rndpqls999.tistory.com/211)- ์๊ฐ์ด ๋๋ค๋ฉด
DFS
/BFS
๊น์ง(https://rndpqls999.tistory.com/210)
- ์ฐ์ฑ๋
Active Suspension
Model ๋ง๋ค๊ธฐ
- ๋ํ๋
Visual Odometry
์ฝ๋์ ์๋FAST
๋์ORB
,BRISK
๋ก ๋ฐ๊ฟ๋ด
- ์ค๊ท๋
5000์
- ์ฌํ๋
C++ Template
์ผ๋ถ
- ์๋น๋
- ์ง๋์ฃผ ์ํ ๋ด์ฉ + ์ถ๊ฐํ ๋ด์ฉ
DFS
/BFS
๋ก ์ฝ๋ ์ง๊ธฐ (https://rndpqls999.tistory.com/210)๋ฌด๋ฐฉํฅ ๊ทธ๋ํ
ํ์ ์์ ๋ฌธ์ (https://rndpqls999.tistory.com/221)Deep copy
&Shallow copy
์ค๋ช (https://rndpqls999.tistory.com/211)
- ์ค๊ท๋
D435
๋ฅผ ์ด์ฉํด ๋ํน ์คํ ์ด์ ๊ตฌ์ถ ์ํ ๊ด๋ จ์๋ฃ ๋ฐํ
- ์ฌํ๋
C++ Inline ํจ์
๋ด์ฉ +implementation header
๊ด๋ จ ๋ด์ฉ ์ถ๊ฐ
- ๋ํ๋
- CycleGAN ๋๋ฆฌ๊ธฐ ์ํ ํ๊ฒฝ ์ค์ + ํ์ต์ค...
- ์ฐ์ฑ๋
- semi active susepension ์๋ฆฌ
- ์ฌํ๋
C++ Template ํน์ํ
&Variadic Template
&TMP
- ์ค๊ท๋
D435
+yolov5
๋ก ๋ฌผ์ฒด ๊ฐ๋ ์ธก์ .- ์ดํ
2D LiDAR
+Camera
Calibration ์งํ ์์ - ๊ด๋ จ ์ฝ๋ ๋ด์ฉ ์ถ๊ฐ
- ์ฌํ๋
STL
&์์ธ์ฒ๋ฆฌ
&rvalue reference
- ์ฌํ๋
move semantics
&perfect forwarding
&Unique Ptr
- ๋ํ๋
StarGAN v2 ๋ ผ๋ฌธ๋ฆฌ๋ทฐ
- ์ฐ์ฑ๋
Active Suspension
Simulink & CarMaker๋ก ํ ์คํธ
- ์ฌํ๋
Shared Ptr
&Callable
&C++ GUI App
- ์๋น๋
- BlackJack ์นด๋ ๊ฒ์ ๊ตฌํํ ์ฝ๋(๊ฐ์ฒด์งํฅ, ์์)
- ์ฌํ๋
- C++
Thread
&mutex
- C++
- ๋ํ๋
- ORB-SLAM3๋ฅผ ์ง์ ์ทจ๋ํ ๋ฐ์ดํฐ ์ ์ผ๋ก ์คํํด๋ณด๊ธฐ + ์ฑ๋ฅ๋น๊ต
- ์ฐ์ฑ๋
- ์ต์ข ํ๋ก์ ํธ ๋ฐํ ์ค๋น
- ์ฌํ๋
Atomic
,Memory Order
- ์ฌํ๋
Python
Selenium
์ฌ์ฉ ์์,Future & Promise
- ์ฐ์ฑ๋
Active Suspension
๊ด๋ จTTC
๊ณ์ฐ ๋ฐ ์ด๋ฅผ ํตํ ์ ์ด ์๊ฐ
- ํด์ (ํ์)
- ์๋น๋
Point Cloud Library
- ์ค๊ท๋
C# ๊ธฐ๋ฐ ์ฃผํ ์ ์ด ์ฝ๋
- ์ฌํ๋
ThreadPool
&initializer_list
- ์๋น๋
pcl RANSAC
&clustering
- ์๋น๋
- GUI
rqt_example
&qt_creator
- GUI