[내일배움캠프 Day17] C++ 빌드 과정
·
내일배움캠프/TIL
소스 코드 작성, 전처리, 컴파일, 어셈블, 링크, 실행 순으로 수행됩니다. 먼저, 사용자가 작성한 소스코드의 #으로 시작하는 전처리기 구문을 처리합니다. 그 다음 고수준의 언어를 어셈블리 언어로 번역하는 작업을 합니다. 어셈블 단계에서는 어셈블리 파일을 오브젝트 파일로 만들고 오브젝트 파일을 합치고, 링크 단계에서 라이브러리와 연결해 주고 실행 가능한 파일을 생성해줍니다.  전처리 → 컴파일러 → 어셈블러 → 링커 컴퓨터는 0과 1로만 이루어져있기 때문에 컴퓨터가 이해할 수 있도록 만들어 주어야 합니다. 이런 과정을 빌드라고 합니다.전처리(preprocessing) : 코드의 주석을 제거, 헤더 파일을 삽입하고, 메크로를 치환하는 기능을 한다.컴파일(Compilation) : 어셈블리 코드로 변환한다...
[내일배움캠프 Day16] C++ 3주차 과제 진행
·
내일배움캠프/TIL
[5번 과제] Unreal Engine 활용 프로그램 제작 MyActor.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "MyActor.generated.h"UCLASS()class STUDY1_API AMyActor : public AActor{ GENERATED_BODY() public: AMyActor();protected: virtual void BeginPlay() override;public: virtual void Tick(float DeltaTime) override; void Move(); int32 Step(); float Distance(FVector2D first, FVector2D se..
[내일배움캠프 Day15] 디자인 패턴 - 구조 패턴
·
내일배움캠프/TIL
이어서  '포르잔 C++ 바이블' 책에 있는 디자인 패턴 내용 중 구조 패턴에 대해 정리하였습니다.  1. 구조 패턴의 개요적절한 자료형이 없는 상태에서 문제를 해결해야 하는 경우, 이미 존재하는 인터페이스와 구현을 결합해서 새로운 자료형을 만들어 문제를 해결합니다. 구조 패턴은 이런 경우 사용하는 방법으로 상속과 구성을 결합해 사용하는 방법을 정리한 것입니다. 2. 브리지 패턴브리지 패턴은 새로운 인터페이스를 만들 때, 이전 구현을 변경하지 않고 간단하게 구현할 수 있게 해줍니다. 새로운 인터페이스가 기존의 인터페이스를 구성으로 포함하고, 새로운 인터페이스 내부의 함수에서 기존의 인터페이스가 갖는 함수를 호출하는 것입니다. 3. 어댑터 패턴기존의 어떤 클래스를 사용해야 하는데 인터페이스가 우리가 원하는..
[리뷰] 누구나 자료 구조와 알고리즘
·
책/리뷰
https://www.yes24.com/Product/Goods/105122143 누구나 자료 구조와 알고리즘 - 예스24사칙 연산으로 복잡한 알고리즘을 쉽게 이해해보자수학 용어와 전문 용어가 아니어도 이해한다이 분야의 책은 대부분 컴퓨터 공학 전공자를 대상으로 쓰였거나 고등학교 수학을 잘 안다고 가www.yes24.com  자료 구조에 대해 가볍게 읽을 책을 찾던 중, 평소 좋아하던 길벗 출판사의 책이라 자연스럽게 선택하게 되었습니다. 현재 개정판이 나왔으나 저는 대학교 전자도서관으로 책을 읽어 개정 전 도서를 읽었습니다. 대상 독자  책 읽는 방법 작가의 설명처럼 책은 순서대로 자연스럽게 이어지며, 자료 구조를 선택하는 방법, 그리고 선택한 자료 구조가 코드 성능에 미치는 영향을 이해하기 쉽게 정리되..
[내일배움캠프 Day14] 디자인 패턴 - 생성 패턴
·
내일배움캠프/TIL
내일배움캠프 3-1 강의에서 디자인 패턴 내용을 간단하게 배워 '포르잔 C++ 바이블' 책에 있는 디자인 패턴 내용 중 생성 패턴에 대해 정리하였습니다.   생성 패턴(creational pattern) : 전통적인 방법으로 인스턴스화하면 안 되는 상황에서, 어떤 형태로 객체를 인스턴스화해야 하는지에 대한 방법 1. 생성 패턴 구조객체 지향 프로그래밍은 원래 위 그림처럼 객체의 설계와 생성을 분리하는 것이 목적입니다. 그런데 클래스를 설계자가 설계한대로 사용자가 사용하지 않는 경우가 많이 발생했습니다. 그래서 객체의 생성과 관련된 모든 책임을 클래스의 사용자에게 맡기는 것이 좋지 않다는 의견이 나왔습니다.설계자와 사용자 사이에서 발생할 수 있는 이러한 객체의 생성과 관련된 문제를 해결할 수 있도록 여러 ..
[내일배움캠프 Day13] C++ 2주차 과제 진행
·
내일배움캠프/TIL
[3번 과제] 템플릿 및 STLSimpleVector.h#pragma once#include #include template class SimpleVector {private: T* data; int currentSize; int currentCapacity;public: // 기본 생성자 SimpleVector() : currentSize(0), currentCapacity(10) { data = new T[currentCapacity]; } // 용량 지정 생성자 SimpleVector(int capacity) : currentSize(0), currentCapacity(capacity) { data = new T[currentCapacity]; } // 복사 생성자 SimpleVector(con..
[내일배움캠프 Day12] 반복자와 포인터
·
내일배움캠프/TIL
반복자에 대해 ' 포르잔 C++ 바이블' 책을 통해 기본적인 내용을 정리했습니다.https://dev0404.tistory.com/31 [C++] 반복자(iterator)1. 반복자 구조반복자(iterator)는 포인터를 추상화한 것입니다. 포인터는 C++이 제공하는 문법이므로 추가적인 제한을 걸거나 기능을 추가할 수 없지만 반복자라는 객체로 포인터를 추상화하면,dev0404.tistory.com추가로 ' 266가지 문제로 정복하는 코딩 인터뷰 in C++' 책의 반복자에 대한 내용을 정리하겠습니다. 예시는 제가 짠 코드로 틀린 내용이 있을 수도 있습니다.  반복자와 포인터의 유사점과 차이점을 설명하라해법 : 둘 다 값을 얻기 위해 역참조할 수 있다는 점에서 비슷하다. 차이점은 다음과 같다1. 포인터는 ..
[C++] 반복자(iterator)
·
C++
1. 반복자 구조반복자(iterator)는 포인터를 추상화한 것입니다. 포인터는 C++이 제공하는 문법이므로 추가적인 제한을 걸거나 기능을 추가할 수 없지만 반복자라는 객체로 포인터를 추상화하면, 추가적인 제한을 걸거나 기능을 추가할 수 있습니다.또한 반복자를 사용하면 컨테이너의 내부 구조를 사용자에게 숨기고, 사용만 하게 만들 수 있습니다. 대부분의 컨테이너는 내부적으로 조작할 수 없는 내부 반복자를 갖고 있습니다. 그리고 사용자는 외부 반복자를 사용해서 컨테이너 내부의 요소에 접근합니다. 내부 반복자는 외부 반복자를 처리할 때 사용됩니다. 2. 반복자 종류반복자는 입력 반복자, 출력 반복자, 전방 반복자, 양방향 반복자, 임의 접근 반복자로 구분합니다.입력 반복자입력 반복자(input iterator..
[내일배움캠프 Day11] 템플릿
·
내일배움캠프/TIL
일반화는 여러 상황에 적용할 수 있는 프로그램 하나를 만들 때 사용할 수 있는 방법입니다. C++는 이런 과정을 템플릿 프로그래밍 혹은 제네릭 프로그래밍이라고 부릅니다. 함수 템플릿1. 함수 템플릿 사용함수 템플릿 문법템플릿 자료형 위치에 플레이스홀더(placeholder)을 사용합니다. T, U, …, Z 등의 플레이스홀더가 실제 자료형으로 대체됩니다.templateT 함수_이름(U first, ... Z last){ ...}템플릿 헤더는 template 키워드와 괄호로 구성됩니다. 괄호에는 함수 내부에서 사용할 자료형 목록의 심볼을 지정합니다.만약 값으로 전달이 아니라 참조로 전달로 코드를 작성하고 싶다면, T를 T&로 변경하기만 하면 됩니다./*****************************..
[내일배움캠프 Day10] 메모리 관리
·
내일배움캠프/TIL
1.메모리 영역C++ 환경은 메모리를 효율적으로 관리하기 위해서 메모리를 여러 영역으로 나눕니다 2.코드 메모리코드 메모리(code memory)는 프로그램 코드를 보유하는 영역입니다. 프로그램이 실행될 때 C++ 실행 환경은 코드 메모리 위에 있는 문장을 하나하나 실행합니다. 코드 메모리는 프로그램이 종료될 때 해제됩니다. 3.정적 메모리정적 메모리(static memory)는 전역 객체(global object)(전역 객체는 어떤 함수에도 속하지 않는 함수 외부에 있는 객체)**와 정적 객체(static object)**를 보유하는 영역입니다. 프로그램이 종료되면 모든 객체들을 정리하고 메모리 위에서 해제합니다./*************************************************..