Make Unreal REAL.
article thumbnail
람다 식(Lambda expression)
C++/기타 2023. 1. 21. 18:22

Lambda 식 함수 compile time에 클래스로 처리되며 실제로는 functor class가 생성된다. 캡처 변수를 갖는 Lambda 식 함수는 생성자를 갖는다. 메모리나 성능 면에서 클래스나 함수 호출보다 비용이 저렴하다. 클래스 변수 생성과 동일하게 스택에 할당 된다. #include #include #include using namespace std; void main() { // 반환 형식을 명시 cout int { return a + b; }(10, 20)

article thumbnail
펑터(Functor)
C++/기타 2023. 1. 21. 17:21

함수처럼 사용할 수 있는 객체이며 Function Object (함수 객체)라고도 불린다. STL에서는 sort 함수 등에 사용되는 greater, less 등의 기본 functor가 제공된다. Lambda 식 함수도 실제로는 Functor이다. #include #include #include using namespace std; class Number { private: int m_Num; public: void operator()(int num) { m_Num = num; } int operator()() { return m_Num; } }; class MyComparator { public: bool operator()(const int& a, const int& b) { return a < b; ..

article thumbnail
for_each와 transform

for_each 원소를 수정하지 않는 경우 사용(레퍼런스로 원소를 받을 경우 수정 가능하나 권장하지 않음) 모든 원소를 순차적으로 접근함을 보장 transform 원소를 수정하거나 다른 곳으로 적용할 경우 사용 모든 원소가 순차적으로 접근됨을 보장하지 않음 #include #include using namespace std; void main() { string s = "Hello World!"; // s의 모든 문자를 1씩 증가시켜 s에 다시 저장한다. transform(s.begin(), s.end(), s.begin(), [](char c) { return ++c; }); // s의 모든 문자를 순서대로 출력한다. for_each(s.begin(), s.end(), [](char c) { cout

article thumbnail
레퍼런스의 내부적인 처리
C++/최적화 2023. 1. 21. 11:58

int pointer(int* p) { return *p; } int reference(int& ref) { return ref; } void func() { int num = 3; num = pointer(&num); num = reference(num); } 위 코드에서 p 포인터 변수는 num의 주소 값을 갖고 있고, ref 변수는 num과 정확히 같은 변수를 뜻한다. 내부적으로 어떤 차이가 있는지 disassembly 해보았다. pointer(int*): push rbp mov rbp, rsp mov QWORD PTR [rbp-8], rdi mov rax, QWORD PTR [rbp-8] mov eax, DWORD PTR [rax] pop rbp ret reference(int&): push rb..

article thumbnail
Level 0. 연속된 수의 합

Level 0. 연속된 수의 합 #include #include using namespace std; vector solution(int num, int total) { vector answer(num, total / num - (num - 1) / 2); for (int i = 0; i < num; ++i) answer[i] += i; return answer; } 시작 = 평균 - (개수 - 1) / 2 시작 값을 num 개수만큼 만들고 index 별로 증가시켜준다.

article thumbnail
템플릿(Template)
C++/기타 2023. 1. 20. 21:58

템플릿(Template) Compile time에 형식이 자동으로 추론되어 구체화된다. 자료형마다 함수를 만들지 않고 재활용할 수 있다. 템플릿을 사용하는 자료형의 개수만큼 코드의 크기가 증가한다. 컴파일 시간이 증가한다. #include #include using namespace std; template void print(const array& arr) { for (T e : arr) cout

검색 태그