[C++] chrono
chrono C++11์์ ์ถ๊ฐ๋ ์๊ฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
chrono C++11์์ ์ถ๊ฐ๋ ์๊ฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
string_view C++17๋ถํฐ ์ถ๊ฐ๋ ํ์ ๋ฌธ์์ด์ ๊ธธ์ด์ ๋ฌธ์์ด์ ๋ํ ํฌ์ธํฐ๋ง ๊ฐ์ง๊ณ ์๋ค string ๋ณด๋ค ํจ์ฌ ๊ฐ๋ณ๋จ null ์ข ๋ฃ ๋ฌธ์๋ฅผ ๊ฐ์ง์ง ์๋๋ค
๋๋ค ํจ์ lambda ์ด๋ฆ ์๋(์ต๋ช ์) ํจ์ ๊ฐ์ฒด
memcpy destination ์ฃผ์๊ฐ, source ์ฃผ์๊ฐ, source์ ๊ธธ์ด๋ฅผ ์ธ์๋ก ๋ฐ๋ ํจ์ sdource์ ๊ฐ์ destination์ผ๋ก ๋ณต์ฌ
Base class
var in C#
Initialization ์ด๋ค ๊ฐ์ฒด๋ ๊ฐ์ฒด์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ ์์ฑ์์ ๋ณธ๋ฌธ์ด ์คํ๋๊ธฐ ์ ์ด๊ธฐํ๋์ด์ผ ํ๋ค
static const in C++
์์ ๊ฐ ํ ๋น ์ธ์ C++ ์์๋ ์์๊ฐ์ const reference์ rvalue reference, ๊ทธ๋ฆฌ๊ณ ๊ฐ์ผ๋ก์์ ํจ์ ์ธ์๋ก ๋ฐ๋๋ก ํ์ฉํ๋ค non-const reference ์ธ์๋ฅผ ๋ฐ๋ ํจ์๋ ํจ์ ์คํ ์ค ์ธ์๋ฅผ ์์ ํ๊ณ ์ ๋ณ๊ฒฝ๋ ์ํ๋ก ๋ค์ caller๋ก ๋์๊ฐ๋ ๊ฒ์ ํ์ฉํ๋ค
๋ฐ์ ์ด์ Stack ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ์ค๋ ๋๊ฐ ์ด๊ธฐํ๋ ๋ ๊ณ ์ ๋ ํฌ๊ธฐ๋ก ๊ฒฐ์ ์ฌ์ฉ๋์ ์ด๊ณผํ์ฌ ์ฌ์ฉํ๋ค๋ฉด ์ํํธ์จ์ด๋ undefined behavior ์ผ๊ธฐ Stack ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ง์ ๋ ๋ฒ์๋ฅผ ๋์ด๊ฐ ๋ ๋ฐ์ ํ ํจ์์์ ๋๋ฌด ํฐ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธ ํจ์๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ฌดํ์ ...
RTTI๋ C++ ์ปดํ์ผ๋ฌ ๋ด์ ์๋ ๊ฐ์ฒด์ ํ์ ์ ๋ณด๋ฅผ ์์๋ด๋ ๊ธฐ๋ฅ ๋ฐํ์์์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ ํ์ ์ ์ ์ ์๊ฒ ํด์ฃผ๋ ๋ฐฉ๋ฒ ๊ฐ์ฒด์ ํ์ ์ ๋ฐํ์์์ ๊ฒฐ์ ํ ์ ์๋๋ก ํ์ฉ ๋ฉ๋ชจ๋ฆฌ ์์ฃผ ๊ฐ์ฒด์ ํ์ ์ ๋ณด ์ถ๊ฐ ๋ฐํ์์์ ๊ฐ์ฒด์ ์บ์คํ ์ด ์ ํจํ์ง ์์๋ด๊ธฐ ์ํด, ๊ฐ์ฒด๋ฅผ ํน์ ํ์ ์ผ๋ก ๊ฒฐ์ ํ...
๋ค์ค ์์ Multiple Inheritance C++์์๋ C#๊ณผ ๋ค๋ฅด๊ฒ, ๋ค์ค ์์์ ํ์ฉ ๊ธฐ๋ฐ ํด๋์ค์ ๋ฉค๋ฒ ๋๋ ๋ฉ์๋์ ์ด๋ฆ์ด ๋์ผํ ๊ฒฝ์ฐ ์ฃผ์ํด์ผ ํ๋ค
DFS Depth-Frist Search ํ์ฌ ๋ถ๊ธฐ๋ฅผ ์๋ฒฝํ๊ฒ ํ์ํ ๋ค ๋ค์ ๋ถ๊ธฐ๋ก ์ด๋ ํ์ฌ ๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ฅผ ์ฐ์ ํ์ ๋ ์ด์ ์ธ์ ํ ๋ ธ๋๊ธฐ ์์ ๋๊น์ง ๋ฐ๋ณต ๊ทธ๋ํ ๋ด์ cycle ์ฌ๋ถ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉ
new/delete์ ์ฌ์ฉํ์ง ์๋ ์ด์ ? ๊ธฐ๋ฅ์ ๊ณผ๋ํ ๋ฒ์ฉ์ฑ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋๋จธ์ hidden behavior ์ํ ๋ถ์ถฉ๋ถํ ๊ธฐ๋ฅ
C++ Template vs. C# Generic C++ ์ ์ปดํ์ผ์ด 1๋ฒ ์ผ์ด๋๊ณ , C# ์ ๋ค๋ฆญ์ ์ปดํ์ผ์ด 2๋ฒ ์ผ์ด๋๋ค. C++ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ปดํ์ผํ์ง ์๋๋ค. ํ์ง๋ง, C# ์ ๋ค๋ฆญ์ ์ฌ์ฉํ์ง ์๋๋ผ๋ ๊ทธ์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ค. ์ ๋ค๋ฆญ์ [๋นํ์ ํฌํ๋ฆฟ...
Heap ๊ตฌ์กฐ์ฒด ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ์ฌ๋ฌ ๊ฐ๋ค ์ค ์ต์๊ฐ์ด๋ ์ต๋๊ฐ์ ๋น ๋ฅด๊ฒ ํ์ํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ ๋ฐ์ ๋ ฌ ์ํ๋ฅผ ์ ์ง ์์ ๊ฐ์ ํ์, ํฐ ๊ฐ์ ์์์ ์๋ ์ ๋ ์ด์ง ํธ๋ฆฌ์๋ ๋ฌ๋ฆฌ, ์ค๋ณต๋ ๊ฐ์ ํ์ฉ ์ด์ง ํธ๋ฆฌ์์ ํน์ ํ ์กฐ๊ฑด์ ๊ฐ์ถ ๊ตฌ์กฐ์ฒด ํธ๋ฆฌ์ ๋์ด h๊ฐ...
์๋ก ์ฐธ์กฐํ๋ shared_ptr ์ํ ์ฐธ์กฐํ๋ shared_ptr์ ์ฌ์ฉํ์ง ์๋๋๋ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ถ๊ฐ
์์ ๊ด๋ฆฌ๋ฅผ ๋ชปํ๋ ์๊ฐ
shared_ptr ์ฌ๋ฌ ๊ฐ์ ์ค๋งํธ ํฌ์ธํฐ๊ฐ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ด ์์ ํด์ผํ๋ ์ํฉ ํ๋์ ์์์ ๋ช๊ฐ์ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋์ง ์ถ์ ํ๋ ํฌ์ธํฐ control block์ ํ ๋นํ์ฌ ๋ณต์ฌ๋ฅผ ํ์ฉ ๊ฐ shared_ptr ๊ฐ์ฒด์ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ ์ค์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ control block์ ํ ๋น ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋...
์๋ฒฝํ ์ ๋ฌ perfect forwarding wrapper ํจ์๊ฐ ํ์ํ ๊ฒฝ์ฐ
move semantic
์์ธ๋? ์ ์์ ์ธ ์ํฉ์์ ๋ฒ์ด๋ ๋ชจ๋ ์์ธ์ ์ธ ์ํฉ๋ค
decltype ์๋ณ์ ํํ์์ด ์๋ ์์ ์ธ์๋ก ๋ฐ๊ณ , ๊ทธ ํ์ ์ T๋ผ๊ณ ํ์ ๋ ์์ ๊ฐ์ด xvalue์ธ ๊ฒฝ์ฐ -> T&& ๋ฅผ ๋ฆฌํด ์์ ๊ฐ์ด lvalue์ธ ๊ฒฝ์ฐ -> T& ๋ฅผ ๋ฆฌํด ์์ ๊ฐ์ด prvalue์ธ ๊ฒฝ์ฐ -> T ๋ฅผ ๋ฆฌํด decltype...
final
์์์ ๋ณํ(implicit conversion)
mutable ์ฌ์ฉ ์์
map ๋ ๋ ๋ธ๋ ํธ๋ฆฌ ๊ธฐ๋ฐ ๊ฒ์์๋๊ฐ ๋น ๋ฅธ Binary Search Tree(BST) + Self-Balancing ๊ธฐ๋ฅ์ ์ถ๊ฐ O(logN)์ ๋ณด์ฅํ๋ ์์ค์ผ๋ก Balancing ํค ๊ฐ์ ๋ถํฌ๊ฐ ๊ณ ๋ฅด์ง ๋ชปํ ๊ฒฝ์ฐ node rotation์ ๋ํ ๋น์ฉ์ด ๊ณ์ ๋ฐ์ํ๊ธฐ์ Insert / Delete ์ฑ๋ฅ์ด...
Procedural Programing (์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ) ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ํจ์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ ํ๋ก๊ทธ๋จ์ด ํจ์ํ ๋์ด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ ํ๋ก๊ทธ๋จ ์ ์ฒด๊ฐ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ ์ฅ์ ์ปดํจํฐ์ ์ฒ๋ฆฌ๊ตฌ์กฐ์ ์ ์ฌํด ์คํ์๋๊ฐ ๋น ๋ฆ ๋จ์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์ ์คํ ์์๊ฐ ์ ํด์ ธ ์์ผ๋ฏ...
ํจ์ ํธ์ถ ๋น์ฉ ํจ์ ํธ์ถ๋ ๋๋ง๋ค ์ผ์ ๋์ ์ฑ๋ฅ ์ค๋ฒํค๋ ๋ฐ์ CPU๊ฐ ๋ค๋ฅธ ๋ ์ง์คํฐ์ ํจ๊ป ์คํ ์ค์ธ ํ์ฌ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ์ ์ฅํด์ผ ํ ๋์ค์ ๋ฐํํ ์์น๋ฅผ ์ ์ ์๋๋ก ๋ชจ๋ ํจ์ ๋งค๊ฐ ๋ณ์๋ฅผ ์์ฑ ์ ์์น๋ก ๋ถ๊ธฐํ๊ธฐ ๋ณด๋ค ๋ด๋ถ ์์ฑ ์ฝ๋(์ธ์คํดํธ ์ฝ๋)๊ฐ ๋ ๋น ๋ฆ
Callback ํจ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋๋ ๋ค๋ฅธ ๋ชจ๋์์ ํธ์ถ๋ ํจ์๋ฅผ ์๋ ค์ฃผ๊ณ , ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋๋ก ํ๋ ๋ฐฉ๋ฒ ์ผ๋ฐ์ ์ผ๋ก OS๊ฐ ํธ์ถํ ์ดํ๋ฆฌ์ผ์ด์ ์ ํจ์๋ฅผ ์ง์ ํด ํน์ ํ ์ฌ๊ฑด / ๋ฉ์ธ์ง๊ฐ ๋ฐ์ํ๋ฉด ํธ์ถํ๋๋ก ์ง์ ์ผ๋ฐ ํจ์ ํธ์ถ ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉ ์ฝ๋ฐฑ ํจ์ ํธ์ถ ...
friend class ํ class์์ ๋ค๋ฅธ class์ field๋ฅผ public์ผ๋ก ์ฐธ์กฐํ๋๋ก ํ์ฉ
์ปจํ ์ด๋์ ์ข ๋ฅ Sequence Container ๊ฐ์ฒด๋ฅผ ์์ฌ์ ์ผ๋ก ๋ณด๊ด ex) vector, list, queue, โฆ Associative Container ํค๋ฅผ ๋ฐํ์ผ๋ก ๋์๋๋ ๊ฐ ํจ๊ป ๋ณด๊ด ํค๋ก ํ์ํ์ฌ ๊ฐ์ ๋ฐํ ex) map, set, unord...
ํ ํ๋ฆฟ(Template)์ด๋ ํจ์๋ ํด๋์ค๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๋ค์ ์์ฑํ์ง ์์๋, ์ฌ๋ฌ ์๋ฃ ํ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๊ฒ ๋ง๋ค์ด ๋์ ํ ํจ์ ํ ํ๋ฆฟ(Function Template)์ ํด๋์ค ํ ํ๋ฆฟ(Class Template)์ผ๋ก ๋ถ๋ฅ
Binary Search ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋์์ผ๋ก ํ์ ์ค๊ฐ ๊ฐ์ธ pivot์ ๊ธฐ์ค์ผ๋ก left์ right์ผ๋ก ๋๋์ด ํ์ ๊ฐ์ ์ฐพ์ ๋๊น์ง ์์ ๊ณผ์ ์ ๋ฐ๋ณต
Overloading ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ ๋งค๊ฐ๋ณ์์ ํ์ ์ด ๋ค๋ฅด๊ฑฐ๋, ๊ฐฏ์๊ฐ ๋ค๋ฆ ๋ฆฌํด ํ์ ์ด๋ ์ ๊ทผ ์ ์ด์๋ ์ํฅ์ ์ฃผ์ง ์์
Bubble Sort
if ๊ฐ์ฅ ์ if ๊ตฌ๋ฌธ๋ถํฐ ์์ํด ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋์ง ์ปจ๋์ ์ฒดํฌ ๋๋ฆฐ ์๋ if, else if ๊ฐ ๋ง์์ง์๋ก Assembly: CMP๋ ๋ง์์ง ๋ฒ์ ์๋ ์ฒดํฌ ๊ฐ๋ฅ
enum๊ณผ enum class์ ์ฐจ์ด
Shallow Copy ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ๋ ์๋๊ฐ๊ณผ ๋ณต์ฌ๋ ๊ฐ์ด ๊ฐ์ ์ฐธ์กฐ๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ ๊ฐ์ฒด์ โ๊ฐโ๋ง ๋ณต์ฌ
๋ณต์ฌ ์๋ต Copy Elision
์ด๊ธฐํ (Initialization) ```c++ // Must initialize the reference at the first int& ra; // Wrong int& ra = a; // Correct
Read-Only ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค ๋ฉ์๋์์ ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค
ํจ์์ ์๋
An integer int a;
ํจ์์ static ๋ณ์ ํจ์ ์์์ ์ ์ธ๋ static ๋ณ์ ๊ฐ์ด ๊ณ ์ ๋จ multi-thread hardware interrupt timer
C์ malloc๊ณผ C++ new์ ์ฐจ์ด
Class์ ์ฌ์ด์ฆ
C/C++ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์ Text segment ๊ธฐ๊ณ์ด๋ก ๋ณํ๋ ์คํ์ฝ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ or obj์ ์ ์ฅ
static_cast ๋ ผ๋ฆฌ ํ๋ณํ ์ฃผ๋ก Scalar Type๋ค ๊ฐ์ ์บ์คํ ํ ๋ณํ ํจ์๊ฐ ์ ์๋์ด ์์ผ๋ฉด ์ด ํจ์๋ฅผ ํธ์ถํ๋ฉด์ ์คํ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํตํ์ฌ ๋ณํ ๊ฐ๋ฅํ ์๋ฃํ์ ์ถ๊ฐํ ์ ์๋ค ์ปดํ์ผ ํ์์์ ์บ์คํ