본문 바로가기

프로그래밍 공부11

[C++ 기초] 반복문(Loop Statement)과 스택 프레임(Stack Frame), 배열 형식과 STL 컨테이너 오늘자 코딩 문제를 풀던 중 반복문을 이용하여 char 배열에 입력 데이터(문자열)를 저장하고 이를 STL vector 클래스의 요소로 저장하려는 과정에서, 배열을 요소로 직접 컨테이너에 넣을 수가 없어 char* 형의 요소를 가지는 vector를 선언하여 해결해보려 했는데 이것 때문에 오류가 발생하였다. * STL의 컨테이너는 배열로 선언된 데이터를 요소로 가질 수 없다(아래의 2) 참고). // 문제의 코드 #include #include int main() { int N = 10; std::vector Pokemons; while (N--) { char pokemon[21] = { 0, }; scanf("%s", pokemon); Pokemons.push_back(pokemon); } for (co.. 2023. 5. 10.
[C++ 기초] 람다 표현식(Lambda Expression)과 클로저(Closure) 람다 표현식(lambda expression)C++11 이상에서 지원하는 기능으로, 람다 표현식(또는 람다 함수, 람다)은 함수에 인수로 호출되거나 전달되는 위치에서 익명 함수 개체(클로저, closure)를 정의할 수 있는 기능이다.  캡처(capture): 람다가 선언된 스코프에 있는 변수를 참조(&) 또는 값(=)으로 복사하여 사용할지의 여부를 정한다. 디폴트를 사용하는 경우([=] 또는 [&]) 람다 본문에 선언되어있는 외부 변수만 캡처된다. 필요에 따라서 람다 외부의 변수명을 명시하여 해당 변수에 대해서만 참조나 값으로 캡처하는 방식을 지정할 수 있다. 람다 외부의 로컬 변수를 참조로 캡처하는 경우, 클로저의 수명이 로컬 변수의 수명보다 오래 지속될 수 있어 액세스 위반(댕글링, dangling.. 2023. 5. 10.
[Unreal Engine 일반] 비주얼 이펙트(VFX) 시스템 개요 - 파티클 시스템(Particle System)과 나이아가라 시스템(Niagara System) 언리얼 엔진의 비주얼 이펙트(visual effect, VFX) 시스템 언리얼 엔진에는 다양한 시각적 효과를 표현하기 위한 파티클 시스템(particle system)과 나이아가라 시스템(Niagara system)이 탑재되어있다(언리얼 엔진 4 버전 이상을 기준). 파티클 시스템과 나이아가라 시스템은 공통적으로 UFXSystemAsset이라는 기반 클래스로부터 상속되어 구현되는 파생 클래스들이며, 우리가 구현하는 월드에 여러 가지 파티클을 스폰(spawn)하는 이미터들을 가지고 있다. 언리얼 엔진 4 버전 이전에는 주로 파티클 시스템을 기반으로 비주얼 이펙트를 생성하고 편집하였으나, 언리얼 엔진 4부터는 나이아가라 VFX 시스템이 새로 추가되었다. 파티클 시스템(particle system)의 특징 파.. 2023. 5. 10.
[자료 구조] 선형(Linear) 자료 구조 (2) 스택(Stack), 큐(Queue) 포스트를 읽으실 때 참고하실 점 해당 카테고리의 포스트들은 C/C++ 언어를 기준으로 작성되어 다른 언어에는 적용되지 않는 내용이 일부 포함될 수 있습니다. 또한, 글의 배치나 띄어쓰기는 PC 버전 전체 화면 크기를 기준으로 작성됩니다. 틀린 부분이 있는 경우, 댓글이나 이메일로 연락주시면 내용을 정정하도록 하겠습니다. 지난 포스트에서 배열, 연결 리스트에 대한 키워드를 정리(정리한 거 맞나?...)해봤는데 이번 포스트에서는 나머지 선형 자료 구조인 스택(stack)과 큐(queue), 그리고 자료 구조를 공부할 때 지속적으로 접하게 되는 개념인 추상 자료형(abstract data type, ADT)의 개념에 대해 정리해보려고 한다. 스택(Stack) 스택은 기본적으로 나중에 들어온 자료를 먼저 내보내.. 2023. 5. 9.
[자료 구조] 선형(Linear) 자료 구조 (1) 배열(Array), 연결 리스트(Linked List) 포스트를 읽으실 때 참고하실 점 해당 카테고리의 포스트들은 C/C++ 언어를 기준으로 작성되어 다른 언어에는 적용되지 않는 내용이 일부 포함될 수 있습니다. 또한, 글의 배치나 띄어쓰기는 PC 버전 전체 화면 크기를 기준으로 작성됩니다. 틀린 부분이 있는 경우, 댓글이나 이메일로 연락주시면 내용을 정정하도록 하겠습니다. 자료 구조와 알고리즘에 대한 이해는 프로그래머 꿈나무에게 있어서 아주 기초적으로 필요한 덕목이지만 본격적으로 파고 들려면 굉장히 어려운 분야이다. 우리 같은 초보 프로그래머 꿈나무들이 자료 구조를 공부해야하는 목적은 '남들이 봤을 때 휘황찬란하고 복잡한 자료 구조를 써야 멋지고 고수 같아서' 가 절대 아니다. 주어진 상황에 따라 어떤 자료 구조를 사용하는 것이 적합할지 스스로 판단하는 능.. 2023. 5. 8.