1. sort와 람다 함수
문자열 정렬 문제를 풀면서 sort()와 람다 함수를 학습했다.
sort
sort()는 컨테이너의 데이터를 정렬하는 함수이다.
sort(strings.begin(), strings.end());
- begin() : 첫 번째 원소
- end() : 마지막 원소의 다음 위치
기본적으로 오름차순 정렬이 수행된다.
람다 함수
정렬 기준을 직접 정의하기 위해 람다 함수를 사용한다.
sort(strings.begin(), strings.end(),
[](const string& a, const string& b)
{
return a < b;
});
람다 함수는 일회성으로 사용하는 익명 함수이다.
별도의 함수를 만들지 않고 바로 정렬 기준을 작성할 수 있다.
캡처(Capture)
람다 내부에서 외부 변수를 사용하기 위해 캡처를 사용한다.
[n]
의 의미는
외부 변수 n을 람다 내부로 가져와서 사용한다.
자주 사용하는 형태
[n] // n만 복사
[&n] // n만 참조
[=] // 모든 외부 변수 복사
[&] // 모든 외부 변수 참조
비교 함수의 의미
return true;
→ 첫 번째 인자를 앞으로 배치
return false;
→ 두 번째 인자를 앞으로 배치
예를 들어
return a[n] < b[n];
은
n번째 문자가 더 작은 문자열을 앞으로 정렬한다.
는 의미이다.
정리
- sort()는 정렬 함수
- 람다는 일회성 함수
- 캡처를 통해 외부 변수 사용 가능
- 비교 함수는 "누가 앞에 와야 하는가"를 결정
2. virtual과 override
순수 가상 함수를 상속받아 구현할 때 헤더에는 override를 작성하지만 cpp에는 작성하지 않는 이유를 학습했다.
헤더(.h)
class Dog : public Animal
{
public:
void Sound() override;
};
헤더는 함수의 선언부이다.
컴파일러는 여기서
- 부모 함수가 존재하는지
- 올바르게 재정의했는지
를 검사한다.
cpp(.cpp)
void Dog::Sound()
{
}
cpp는 함수의 구현부이다.
이미 헤더에서
void Sound() override;
검사가 끝났기 때문에 구현부에서는 다시 작성하지 않는다.
virtual과 override 차이
virtual
부모 클래스에서
이 함수는 재정의될 수 있다
는 의미
override
자식 클래스에서
부모 함수를 재정의하고 있다
는 의미
중요한 점
부모 함수가 virtual이면
자식 함수도 자동으로 virtual이다.
그래서 실무에서는
void Sound() override;
형태를 많이 사용한다.
정리
- virtual은 부모 클래스에서 사용
- override는 자식 클래스에서 사용
- override는 선언부에서만 작성
- cpp는 구현만 담당
- 부모가 virtual이면 자식도 자동 virtual
3. TEXT()
언리얼에서 문자열을 사용할 때는 TEXT() 매크로를 사용한다.
예시
TEXT("Camera")
TEXT("SpringArm")
UE_LOG(LogTemp, Warning, TEXT("Hello"));
사용하는 이유
언리얼은 문자열을 TCHAR 기반으로 처리한다.
TEXT()는 일반 문자열을 언리얼 문자열 형식으로 변환해 준다.
예를 들어
"Camera"
는 일반 C++ 문자열이고,
TEXT("Camera")
는 언리얼이 사용하는 문자열 형식이다.
CreateDefaultSubobject
컴포넌트 생성 시 이름을 지정할 때도 사용한다.
Camera = CreateDefaultSubobject<UCameraComponent>(
TEXT("Camera")
);
이 이름은 에디터의 컴포넌트 창에 표시되는 이름이 된다.
정리
- 언리얼 문자열은 TEXT() 사용
- UE_LOG()에서도 사용
- CreateDefaultSubobject() 이름에도 사용
- 언리얼에서는 문자열을 작성할 때 TEXT()를 습관적으로 붙이는 것이 좋다.
오늘의 핵심 한 줄
- sort()는 "누가 앞에 올지" 결정하는 함수이다.
- 람다는 일회성 함수이며 캡처를 통해 외부 변수를 사용할 수 있다.
- override는 선언부에서만 사용하며 구현부에서는 사용하지 않는다.
- 언리얼 문자열은 TEXT()를 사용하는 것이 기본이다.
'TIL' 카테고리의 다른 글
| 언리얼 EQS(Environment Query System)를 공부하며 이해한 것 (0) | 2026.06.15 |
|---|---|
| [TIL] 언리얼 C++ & 코드카타 학습 정리 (0) | 2026.06.12 |
| [TIL] - 언리얼 C++ Pawn, Enhanced Input, 비행체 구현 (0) | 2026.06.10 |
| [TIL] Unreal Engine Enhanced Input System (C++) (0) | 2026.06.09 |
| Codex와 Unreal Engine MCP 연결 (0) | 2026.06.08 |