Game DevTip53 18. C++ 템플릿 활용 C++ 클래스 템플릿이란?템플릿은 타입에 구애받지 않고 재사용 가능한 코드를 작성하게 한다. 특히 클래스 템플릿은 C++ 프로그래밍에서 코드 재사용성과 타입 안전성을 높이는 도구이다. 클래스 템플릿은 다양한 타입에 대해서 동일한 구조와 기능을 제공하는 클래스를 정의하는 방법. 클래스 템플릿의 매개변수는 클래스의 멤버 변수 타입, 메서드의 매개 변수나 반환 타입을 결정한다. 게임 개발에서는 기획서에 정의된 데이터 처리나 유사한 기능을 가진 게임 객체 관리를 위해서 자주 사용된다.클래스 템플릿 선언클래스 템플릿은 일반 함수 템플릿과 유사한 방식으로 선언한다.// C++14templateclass ObjectMgr { ... }// C++17templateclass ObjectMgr { ... } templ.. 2025. 7. 28. 5. 삽입정렬에 대해서 삽입 정렬(Insertion Sort)핵심 개념삽입 정렬은 이미 정렬되니 부분에 새로운 원소를 올바른 위치에 삽입하는 방식으로 동작하는 정렬 알고리즘이다. 마치 카드 게임에서 손패를 정렬하는 방식과 동일하다. 문제 정의 - 입력 : 양의 정수 n개의 키를 가진 배열 S[0...n-1]- 출력 : 오름차순으로 정렬된 배열 S[0...n-1]- 방법 : 각 원소를 이미 정렬된 부분의 적절한 위치에 삽입 핵심 아이디어1. 첫 번쨰 원소는 이미 정렬이 된 것으로 간주(미정렬부분과 정렬부분은 별개로 분리하여 따로 빼둔다.)2. 두 번째 원소부터 시작해서 하나씩 처리. 3. 현재 원소를 정렬된 부분의 올바른 위치에 삽입4. 모든 원소가 처리될 때까지 반복한다. 단계별 동작 과정초기 배열: [10, 7, 9, 1.. 2025. 7. 27. 1. Rust에 대해서 Rust란 무엇인가?Rust(러스트)는 성능과 안정성을 모두 추구하는 시스템 프로그래밍 언어이다. 모질라(Mozilla) - FireFox 개발사에서 개발해 시작되었으며, 현재는 독립적인 커뮤니티, 재단등을 중심으로 활발하게 개발되는 중인 언어. 러스트의 가장 큰 특징은 아래와 같다. 1. 메모리 안정성을 보장한다. 2. C++ 수준의 실행 성능을 유지한다. 3. GC(가비지 컬렉터) 없이도 안정적인 코드 작성이 가능하다. 이런 특성 떄문에 러스트는 시스템 프로그래밍, 네이티브 성능이 중요한 어플리케이션,웹 백엔드, 임베디드 개발등에서 많이 활용되는 중이다. Rust는 왜 필요할까? 기존에 널리 사용되고 있던 C,C++의 경우 고성능을 제공하지만, 사용자가 직접 메모리 관리 책임을 져야 한다는 점.. 2025. 7. 27. 17. C++ 람다(Lamda) 표현식 람다 표현식이란?C++에서는 C++11에 도입된 람다 표현식(Lambda Expressions)은코드를 더 간결하고 가독성 있게 작성할 수 있는 코딩 표현식중 하나이다. 특히 알고리즘, STL과 함께 사용 시 진가를 발휘 할 수 있는 기능. 간단히 말하자면 이름 없는 함수(익명함수)를 의미한다. 일반적으로 짧고 간단한 작업을임시로 함수처럼 사용할 때 유용하다. 기존에 함수를 정의하고 이름을 지정하는 번거로움 없이코드 내에서 직접 함수 로직을 작성할 수 있다. 주요 장점들은 아래와 같다. 1. 코드를 더 간결하게 작성 가능하다. 2. 함수를 사용하는 곳과 가까운 위치에 정의하여 가독성을 향상시킨다. 3. 지역 변수에 쉽게 접근 가능하다.(캡처)4. 함수 객체를 즉석에서 생성 가능하다. 5. STL 알.. 2025. 7. 27. 4. 선택정렬과 이중 선택정렬에 대해서 알아보자. 정렬 알고리즘의 기초 개념정렬의 대상: 레코드(Record)struct Student { int id; // 학번 string name; // 이름 int score; // 점수}; 정렬의 대상: 레코드(Record) - 정렬키 : 정렬의 기준이 되는 필드 - 위 예시에서 id, name, score 중 어느 것이든 정렬키가 될 수 있다. 정렬 방향 - 오름차순 (Ascending) : 작은 값 -> 큰 값 - 내림차순 (Descending) : 큰 값 -> 작은 값 정렬 분류 : 메모리 사용에 따른 분류1. 내부 정렬 (internal Sorting) - 정렬 대상을 한꺼번에 메인 메모리에 로딩 가능 할 때, - 대부분의 기본 정렬 알고리즘이.. 2025. 7. 26. 16. C++ 순수 가상함수(추상 클래스 & 인터페이스)에 대해서 C++ 추상 인터페이스와 추상 클래스 객체 지향에서 추상화는 매우 중요한 핵심 개념중 하나이다. C++에서 추상화를 구현하는 주요 방식으로 추상 인터페이스와 추상 클래스가 있는데, 해당 개념, 그리고 순수 가상함수와 추상 클래스의 차이점에 대해서도 알아보자. 추상 인터페이스의 개념추상 인터페이스는 클래스의 기능(행위)을 정의하지만구현은 포함하지 않는 순수 가상 함수(pure virtual function)들의 집합이다.C++에서 추상 인터페이스는 다음과 같은 특징을 가진다. 1. 순수 가상 함수만 포함 하는 클래스2. 함수에 대한 구현 부분이나 멤버 변수가 존재하지 않음. 3. 헤더파일에 선언되며, public 메서드로만 선언된 클래스. 4. 인터페이스 클래스는 종종 'I' 접두어를 사용(예시 : IG.. 2025. 7. 26. 3. 버블정렬 알고리즘에 대해서 버블 정렬이란?*버블 정렬(Bubble Sort)**은 가장 기본적인 정렬 알고리즘 중 하나로, 인접한 두 원소를 비교하여 순서가 잘못되어 있으면 교환하는 과정을 반복하는 방식이다.기본 정보입력: 양의 정수 n개의 키를 가진 배열 data[0..n-1]출력: 오름차순으로 정렬된 배열 data[0..n-1]정렬 방식: In-place sort (추가 메모리 공간을 거의 사용하지 않음)안정성: 안정 정렬 (Stable Sort) 버블 정렬이라 불리는 이유는 큰 원소가 배열의 끝으로 이동하는 모습이 마치 물속에서 기포(bubble)가 수면으로 떠오르는 것과 같다고 생각해서 그렇다고 한다....(.....진짜로..?) 동작 원리 1. 인접한 두 원소를 비교한다.2. 순서가 잘못되어 있으면 교환한다.3. 배열 .. 2025. 7. 25. 15. C++ 예외 처리 Try Catch문 C++ 예외 처리 : try-catch, throw, noexcept예외 처리는 C++ 프로그래밍에서 오류를 감지하고 대응하는 매커니즘.적절히 활용한다면 안정적인 프로그램을 작성할 수 있으며,오류 처리 로직을 메인코드와 분리해서 가독성을 높일 수 있다. 1. Try-Catch 문의 기본 개념기본 구조와 동작 방식C++의 예외처리는 try, throw, catch 세가지 키워드를 중심으로 이뤄진다. #include using namespace std;double SafeDivide(double num, double den){ if (den == 0) { throw invalid_argument("Divide by zero"); } return num / den;}int ma.. 2025. 7. 25. 이전 1 2 3 4 ··· 7 다음