기술 질문

[기술 질문] #18_알고리즘 복잡도 알고리즘의 복잡도에 대해 알아보겠습니다. Overview 개념 시간 복잡도 공간 복잡도 #0. 개념 1. 복잡도 알고리즘의 복잡도는 알고리즘의 입력 크기와 연산 횟수 사이의 관계를 나타내는 함수입니다. 보통 시간 복잡도와 공간 복잡도로 나누어져 있습니다. #1. 시간 복잡도 1. 개념 시간 복잡도는 알고리즘이 실행되는 동안 수행하는 기본적인 연산 횟수를 입력 크기와 연관시켜 분석하는 것입니다. 결과적으로, 입력 크기에 따라서 알고리즘의 실행 시간이 어떻게 변화하는지 나타내며, 알고리즘의 효율성과 성능을 평가하는 중요한 지표 중 하나입니다. Big-O 표기법은 알고리즘의 시간 복잡도를 점근적으로 표기하는 방법입니다. 즉, 알고리즘의 입력의 크기가 충분히 커질 때, 알고..
[기술 질문] #17_Lambda C++의 Lambda에 대해 알아보겠습니다. Overview 개념 캡처 블록 람다의 활용 LinQ [Basic C++] #44_람다 표현식, 기본 [Basic C++] #44_람다 표현식, 기본 STL 알고리즘 중 "람다 표현식"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 syntax 캡처 블록 webddevys.tistory.com return type { function body } Details [정의] : C++의 람다 표현식은 익명의 함수 객체를 인라인으로 정의할 수 있도록 해주는 기능입니다. [구성] : 람다 표현식은 대괄호로 시작하는 캡처 리스트, 중괄호로 시작하는 매..
[기술 질문] #15_RTTI, 런타임 타입 정보 C++의 RTTI에 대해 알아보겠습니다.  Overview 개념typeid캐스팅 #0. 개념1. RTTI[정의] : C++의 RTTI는 "Run-Time Type Information"의 약자로, 프로그램 실행 중 객체의 동적 타입 정보를 식별하고 검색하는 기능을 제공합니다.[특징] : 다형성 제공 : C++의 가상 함수는 다형성을 구현하는 중요한 매커니즘 중 하나입니다. 파생 클래스는 기본 클래스의 가상 함수를 오버라이딩 할 수 있으며, 동일한 시그니처의 함수를 하나의 데이터 타입에 귀속되지 않고, 여러 유형으로 표현될 수 있도록 해줍니다. 가상 함수는 동적 바인딩을 통해 객체의 동적 타입에 맞는 적절한 함수 호출을 보장합니다. 만약, 기본 클래스의 포..
[기술 질문] #15_가상 함수 C++의 가상 함수에 대해 알아보겠습니다. Overview 개념 가상 소멸자 추상 클래스 인터페이스 #0. 개념 1. 가상 함수 [정의] : C++의 가상 함수는 기본 클래스에서 virtual 예약어와 함께 선언되며, 파생 클래스에서 오버라이드(재정의)할 수 있습니다. 컴파일러는 해당 함수를 가상 함수로 처리하고 객체의 타입에 따라 해당 함수의 호출 대상을 동적으로 결정할 수 있습니다. 결과적으로, 가상 함수의 사용은 객체의 타입에 관계없이 일관된 인터페이스를 제공하며, 파생 클래스의 재정의를 통해 유연하게 확장할 수 있도록 해줍니다. [특징] : 가상 함수는 다형성을 구현하는 중요한 메커니즘입니다. 가상화된 멤버 함수는 파생 클래스에서 오버라이딩 할 수 있으며, 같은 이..
[기술 질문] #14_템플릿, Template C++의 템플릿에 대해 알아보겠습니다. Overview 개념 템플릿 변수 템플릿 함수 템플릿 non-type 파라미터 템플릿 클래스 이중 템플릿 #0. 개념 1. 정의 C++의 '템플릿'은 함수나 클래스가 특정한 데이터 형식이 유형에 귀속되지 않고, 일반화되어 여러 데이터 형에 대해 동작할 수 있도록 하는 '제네릭 프로그래밍'을 제공합니다. 따라서, 템플릿은 서로 다른 유형의 클래스 혹은 함수의 인스턴스 생성을 위한 청사진을 제공하며, 컴파일 시점에 그 상세 유형이 결정됩니다. 2. 특징 [ 일반화 ] : 템플릿은 특정한 데이터 형식에 의존하지 않고 여러 종류의 데이터 형식에 대해 동작할 수 있도록 합니다. 이러한 특징은 사용자로 하여금 코드 작성의 유연성과..
[기술 질문] #12_함수 포인터 함수 포인터에 대해 알아보겠습니다. Overview 개념 대리자(Delegate) 콜백(Callback) 함수 #0. 개념 1. 함수 포인터?? // [ 반환 타입 | 포인터 이름 | 매개 변수 ] int (*funcPtr1)(int a, int b); void (*funcPtr2)(); C++는 변수 혹은 배열을 가리키는 포인터와 함께 함수를 가리키는 포인터 또한 지원합니다. #1. 대리자 1. 정의 Delegate는 범용적이고, 타입 안정성을 갖고 이벤트 처리 및 콜백 매커니즘을 구현하는 중요한 개념입니다. Unreal C++의 Delegate는 함수 호출 작업을 위임받아, 일관된 관점을 갖고 처리하는 인터페이스입니다 2. 동작 방식 델리게이트 C++ 오브젝트 상의 ..
[기술 질문] #8_컴파일러, Compiler 컴파일러에 대해 알아보겠습니다. Overview 개념 컴파일 과정 컴파일러 vs 인터프리터 C# vs C++ 게임 프로그래밍의 C++ 사용 이유 #1. 개념 1. 컴파일러?? 컴파일(Compile)은 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스입니다. 일반적으로, 컴파일러는 고급 언어로 작성된 코드들을 컴퓨터 언어로 변환하는 작업을 일컫습니다. 2. 인터프리터?? 인터프리터는 고급 언어로 작성된 원시 코드를 바로 실행하는 프로그램 또는 환경을 의미합니다. 일반적으로, 인터프리터는 고급언어로 작성된 원시 코드 명령어들을 한 번에 한 줄씩 읽어가며 실행하는 프로그램입니다. 소스 코드를 직접 실행하거나, 소스 코드를 다..
[기술 질문] #6_동적 할당 C++의 동적 할당에 대해 알아보겠습니다. Overview 개념 malloc, free new, delete virtualalloc, virtualfree #1 개념 [Basic C++] #57_동적 메모리 [Basic C++] #57_동적 메모리 C++의 "동적 메모리"에 대해 알아보겠습니다. "전문가를 위한 C"의 22 항목, "효과적인 메모리 관리"에 해당하는 내용입니다. 동적 메모리 1. 메모리 구조 1. 코드 영역 : 컴 webddevys.tistory.com [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 [Basic C++] #3 객체의 동적 할당, 얕은 복제, 깊은 복제 C++ 개발 중 객체 생성, 복제, 그리고 대입 과정에서 발생하는, ..
[기술 질문] #5_struct, 구조체 C++의 구조체에 대해 알아보겠습니다. Overview 개념 배열과 구조체 공용체 패딩 #1 개념 1. 구조체? struct MyStruct { int IntVal; float FloatVal; long LongVal; string Str; }; 구조체는 논리적으로 관련이 있는 항목들을 하나의 자료형으로 묶기 위해 사용됩니다. 객체의 데이터 멤버처럼, 구조체의 각 멤버들은 "."를 통해 접근이 가능하며, 포인터를 활용할 수도 있습니다. 2. 주의할 점? 구조체 변수 사이에 비교 연산자를 사용할 수 없습니다. 구조체 자신의 멤버로 구조체 자신을 사용할 수 없습니다. 구조체 선언에서 멤버 변수를 초기화할 수 없습니다. 3. 코드 #include using namesp..
[기술 질문] #3_const 키워드 C++의 "const" 키워드에 대해 알아보겠습니다. Overview const 변수 const 데이터 멤버 const 멤버 함수 const 변수 1. const 변수 const float SomeFloat = 3.5; const std::string SomeStr = "Hello World"; Details const 키워드는 절대 변하지 않는 상수 값을 정의하기 위해 이용합니다. const 키워드는 선언문의 가장 앞에 붙여 활용합니다. 정리하자면, const 키워드로 선언된 변수는 컴파일러에 의해 그 값이 바뀌지 않도록 보증됩니다. 예외적으로, const_cast를 통해 상수성 제거가 가능한 경우도 있습니다. 2. const 포인터 // #1 첫 번째 목적 : 포..
Hardii2
'기술 질문' 태그의 글 목록