게임 개발자
close
프로필 배경
프로필 로고

게임 개발자

  • 분류 전체보기 (83)
    • Algorithm (11)
    • Unreal (50)
    • C++ (13)
    • The Wild Card 제작 (7)
  • 홈
  • 태그
  • 방명록

[C++] STL Map

개요C++ STL 중 하나인 Map의 사용방법을 정리해보자맵은 Key와 Value를 가지고 있고 index 대신 Key로 값을 찾는 컨테이너이다. Map 선언#include #include using namespace std;int main(){ map m1; map m2 = { {1, "first"}, {2, "second"}, {3, "third"} }; map> m3; map, string> m4;Map 복사int main(){ map original; original[0] = "Apple"; original[1] = "banana"; map copy1(original); //복사 생성자 ..

  • format_list_bulleted C++
  • · 2024. 12. 23.
  • textsms

[C++]템플릿 사용 시 파일 분할

개요일반적인 c++ 프로젝트에서 파일분할은 다음과 같다.헤더파일(.h) : 클래스 선언소스파일(.cpp) : 클래스 정의그리고 헤더파일에서는 #include를 지양하고 cpp파일에서만 헤더파일을 include하는 식으로 의존성을 관리한다.하지만 template의 경우 조금 다르기에 정리해보고자 한다. Template의 파일 분할만약 다음과 같이 파일을 분할 하였다면 코드는 다음과 같은 것이다.PointTemplate.h : 클래스 템플릿 선언PointTemplate.cpp : 클래스 템플릿 정의PointMain.cpp : 클래스 사용 PointTemplate.h #pragma oncetemplate class Point{private: T xpos, ypos;public: Point(T x=0, T y=..

  • format_list_bulleted C++
  • · 2024. 12. 23.
  • textsms

[C++] 템플릿의 특수화

개요templete을 사용하는 이유는 그냥 클래스나 함수를 여러 자료형에 사용할 수 있도록 해준다 정도로 이해하고 있었는데템플릿의 특수화를 사용하면 자료형에 따라 구분되는 행동 양식을 적용하다는 사실을 새로 알아서 정리해봤다.함수 템플릿의 특수화(Specialization)어려운 개념은 아니니 사용법만 보면함수 오버로딩과 비슷한 느낌으로 template으로 처리한 부분을 특정 자료형으로 바꾸고 template을 선언해주면 된다.template T Max(T a, T b) { return a > b ? a : b;}templatechar* Max(char* a, char* b) { return strlen(a) > strlen(b) ? a : b;}template const char* Max(con..

  • format_list_bulleted C++
  • · 2024. 12. 23.
  • textsms

[C++] unique_ptr, shared_ptr

개요c++에서는 new로 동적 할당을 하게 되면 delete를 반드시 해줘서 메모리 누수가 없도록 해야한다.따라서 메모리 해제를 자동으로 해주는 스마트 포인터를 대안으로 사용하는데 스마트 포인터란 메모리를 참조하는 레퍼런스 카운트를 저장하고 카운트가 0이 되면 메모리를 해제하는 포인터이다.기본적인 동적할당말고 c++에서 제공해주는 스마트 포인터가 있는데 바로unique_ptrshared_ptrunique_ptrunique_ptr은 레퍼런스 카운트가 최대 1인 스마트포인터이다.따라서 복사나 대입이 불가능하고 대신 move를 통해 소유권을 이전하는게 가능하다.알아야 할 건선언 및 동적 할당 : std::unique_ptr ptr1 = std::make_unique();소유권 이전 : std::unique_p..

  • format_list_bulleted C++
  • · 2024. 12. 23.
  • textsms

[C++] 연결 리스트

연결리스트연결리스트는 배열처럼 순차적으로 메모리가 할당되어있는게 아니라 각 원소가 다음 원소의 주소를 가져 서로 이어지는 형태로 만들어진다.따라서 다음과 같은 특징들이 생기는데k번째 원소를 변경/확인하기 위해서는 O(k)의 시간 필요임의의 위치에 원소를 추가/제거하는 경우는 O(1)의 시간 필요연결리스트 종류단일 연결 리스트 : 원소가 다음 원소의 주소 가지고 있음이중 연결 리스트: 원소가 다음 원소, 이전 원소의 주소를 가지고 있음, STL List가 이중 연결 리스트원형 연결 리스트: 끝 원소가 처움 원소의 주소를 가지고 있음배열과 연결리스트 차이둘다 선형 자료구조이지만 차이점이 있다. 배열연결 리스트k번째 원소에 접근O(1)O(k)임의의 위치에 원소 추가/제거O(N)O(1)메모리 상의 배치연속불연속..

  • format_list_bulleted C++
  • · 2024. 12. 23.
  • textsms

[Algorithm] 배열 활용하기

개요보통 배열은 데이터를 쌓아두는 용도로 사용한다.배열을 다음과 같은 접근으로 생각하면 문제를 효율적으로 풀 수 있는 경우가 많다!배열을 인덱스에 해당하는 원소를 빠르게 접근하는 목적으로 사용한다.문장만 봐서는 뜻이 아리까리 하다.예시 문제로 이해해보자.두 원소의 합이 100주어진 길이 N의 int 배열 arr에서 합이 100인 서로 다른 위치의 두 원소가 존재하면 1을, 존재하지 않으면 0을 반환하는 함수 func2(int arr[], int N)을 작성하라. arr의 각 수는 0 이상 100 이하이고 N은 1000 이하이다. 예시func2({1, 52, 48}, 3) = 1,func2({50, 42}, 2) = 0 문제를 봤을 때 O(N^2)의 시간복잡도를 가지는 풀이가 생각날 것이다.배열을 순차적으..

  • format_list_bulleted Algorithm
  • · 2024. 12. 19.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (83)
    • Algorithm (11)
    • Unreal (50)
    • C++ (13)
    • The Wild Card 제작 (7)
최근 글
인기 글
최근 댓글
태그
  • #UI
  • #reflection
  • #c++
  • #UnReal
  • #LYRA
  • #Algorithm
  • #c++ project
  • #card game
  • #network
  • #STL
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바