언어/기술 질문

[기술 질문] #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. 특징 [ 일반화 ] : 템플릿은 특정한 데이터 형식에 의존하지 않고 여러 종류의 데이터 형식에 대해 동작할 수 있도록 합니다. 이러한 특징은 사용자로 하여금 코드 작성의 유연성과..
[기술 질문] #13_6가지 디폴트 멤버 메서드 클래스의 6가지 디폴트 멤버 메서드에 대해 알아보겠습니다. Overview 개요 6가지 디폴트 메서드 대입 vs 생성, 복제 vs 이동 얕은/깊은 복사 #0. 개요 1. 클래스 제공 기본 메서드 C++의 클래스는 사용자가 별도로 정의하지 않아도, 컴파일 시점에 컴파일러가 자동으로 생성하는 몇 가지 디폴트 메서드들이 존재합니다. 클래스가 제공하는 6가지 디폴트 혹은 암시적 메서드들은 생성자, 복사 생성자, 복사 대입 연산자, 이동 생성자, 이동 대입 연산자, 그리고 소멸자가 있습니다. #1. 6가지 디폴트 메서드 1. 디폴트 생성자 #include using namespace std; class MyClass {}; int main() { MyClass* o..
[기술 질문] #12_함수 포인터 함수 포인터에 대해 알아보겠습니다. Overview 개념 대리자(Delegate) 콜백(Callback) 함수 #0. 개념 1. 함수 포인터?? // [ 반환 타입 | 포인터 이름 | 매개 변수 ] int (*funcPtr1)(int a, int b); void (*funcPtr2)(); C++는 변수 혹은 배열을 가리키는 포인터와 함께 함수를 가리키는 포인터 또한 지원합니다. #1. 대리자 1. 정의 Delegate는 범용적이고, 타입 안정성을 갖고 이벤트 처리 및 콜백 매커니즘을 구현하는 중요한 개념입니다. Unreal C++의 Delegate는 함수 호출 작업을 위임받아, 일관된 관점을 갖고 처리하는 인터페이스입니다 2. 동작 방식 델리게이트 C++ 오브젝트 상의 ..
[기술 질문] #11_허상 포인터(Dangling Pointer) 허상 포인터에 대해 알아보겠습니다. Overview 개념 발생 원인 #0. 개념 1. 허상 포인터?? 허상 포인터는 유효한 객체를 가리키고 있지 않은 포인터를 의미합니다. 주로 객체 파괴 시 발생하는 문제로 객체에 대한 참조가 포인터 값에 대한 수정 없이 삭제되거나, 할당 해제되어 포인터가 지속적으로 할당 해제된 메모리 영역을 가리킬 때 발생합니다. 허상 포인터에 역참조할 시 예측 불가능한 동작으로 정의되며, 잠재적 보안 오류를 갖고 있습니다. #1. 발생 원인 1. 얕은 복제 int main() { ClassA class1(3); // 디폴트 복사 생성자 사용 ClassA class2(class1); delete class1; // Da..
[기술 질문] #10_실수형의 문자열 변환 실수형(float, double)의 문자열 변환에 대해 알아보겠습니다. Overview 매크로 std::to_string 함수 std::stringstream 객체 + str 함수 #0. 매크로 1. 매크로 식 #include #include using namespace std; #define STRING(num) #num int main() { string float_str(STRING(123.456)); cout
[기술 질문] #9_부동 소수점 float 자료형과 부동 소수점에 대해 알아보겠습니다. Overview 고정 소수점 부동 소수점 오차 발생의 이유 무한과 NaN #0. 고정 소수점 1. 개념 컴퓨터에서 실수를 표현하는 두 가지 방식 중 "고정 소수점" 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수만 표현하는 것입니다. 가장 왼쪽의 1Bit는 부호를 표현하고, 나머지 31Bit를 정수부와 소수부로 표현합니다. 소수부는 점을 기준으로 순서대로 채우며, 나머지 Bit는 0으로 채워줍니다. 고정 소수점 방식의 장점은 구현의 편리함입니다. 고정 소수점 방식의 단점은 비트 수 대비 표현 가능한 수의 범위와 정밀도가 낮기 때문에 실수 표현을 다루는 범용 시스템에서 사용하지 않고, 높은 정밀도를 필요로 ..
Hardii2
'언어/기술 질문' 카테고리의 글 목록