deulee의 개발 노트

고정 헤더 영역

글 제목

메뉴 레이어

deulee의 개발 노트

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (112)
    • C++ (79)
      • C++98 (36)
      • Modern C++(11, 14, 17, 20) (34)
      • C++ STL (9)
    • 데이터베이스 (0)
    • 컴퓨터 구조 (0)
    • 운영체제 (0)
    • 읽은 책 (0)
    • 네트워크 (0)
    • 알고리즘 (31)
      • 이론 (5)
      • 문제 (26)
    • 잡글 (1)
      • 아이디어 (0)
      • 해야할 것 (0)
      • 목표 (0)
      • 정보글 (1)
    • git (0)
홈태그방명록
  • C++ 79
    • C++98 36
    • Modern C++(11, 14, 17, 20) 34
    • C++ STL 9
  • 데이터베이스 0
  • 컴퓨터 구조 0
  • 운영체제 0
  • 읽은 책 0
  • 네트워크 0
  • 알고리즘 31
    • 이론 5
    • 문제 26
  • 잡글 1
    • 아이디어 0
    • 해야할 것 0
    • 목표 0
    • 정보글 1
  • git 0

검색 레이어

deulee의 개발 노트

검색 영역

컨텐츠 검색

전체 글

  • 원티드 포텐업 게임 클라이언트 지원

    2024.10.09 by deulee

  • [C++11 - library features] std::begin/end

    2023.08.28 by deulee

  • [C++11] Move Semantics

    2023.08.28 by deulee

  • [C++11] Rvalue references

    2023.08.28 by deulee

  • [C++11] Forwarding References(Universal References)

    2023.08.28 by deulee

  • [C++11] Variadic templates

    2023.08.28 by deulee

  • [C++11] Initializer lists

    2023.08.28 by deulee

  • [C++11] Static Assertions

    2023.08.26 by deulee

원티드 포텐업 게임 클라이언트 지원

안녕하세요, 저는 언리얼 엔진을 이용해 게임 개발을 진행하며 주로 네트워크 부분을 담당하고 있습니다. 엔진 코드를 분석하고 디버깅하면서 독학으로 실력을 쌓아왔지만, 실무에서 올바른 접근을 하고 있는지에 대한 확신이 부족해 고민이 많았습니다. 특히 네트워크 최적화, 멀티플레이 기능 구현, 타이밍 오류 해결에 적합한 설계를 하고 있는지에 대해 피드백을 받을 기회가 부족했습니다. 또한, 체계적인 게임 개발 프로세스를 배우고 적용할 기회가 부족해 어려움을 겪은 경험도 있으며, 이로 인해 스스로의 부족함을 절실히 느꼈습니다. 원티드 포텐업의 커리큘럼과 멘토님들의 도움을 통해 부족한 지식을 보완하고, 실무에 적용할 수 있는 능력을 키워 효율적이고 발전된 개발자로 성장하고 싶습니다. 멘토님들과의 소통을 통해 업계의 ..

카테고리 없음 2024. 10. 9. 22:52

[C++11 - library features] std::begin/end

`std::begin`과 `std::end`는 C++11에서 도입된 컨테이너의 일반적인 `begin`과 `end` 반복자를 반환해주는 기능이다. 이들의 특징은 특정 클래스의 멤버 함수로써 존재하는 것이 아니라 "raw array"와 같이 `begin`과 `end` 멤버 함수가 없는 배열에도 유용하게 사용된다는 것이다. #include #include #include template int CountTwos(const T& container) { return std::count_if(std::begin(container), std::end(container), [](int item){ return item == 2; }); } int main(void) { std::vector vec = {2, 2, 43..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 16:30

[C++11] Move Semantics

"Move Semantics(이동 의미론)"은 C++11로부터 도입된 핵심적인 개념으로, 객체의 "소유권"을 전환하거나 "전달"하는 방식을 나타낸다. 이는 C++에서 더 효율적인 객체 복사와 동적 자원 관리를 가능하게 해준다. "Move Semantics"를 이용하면 임시 객체나 rvalue로부터 객체의 리소스를 효율적으로 이동시켜 새로운 객체를 생성하거나 기존 객체에 리소스를 할당할 수 있다. 이를 통해 복사 대신 리소스의 소유권을 이전함으로써 성능을 최적화시킬 수 있다. 특히, 동적 메모리 할당과 같이 무거운 작업에서 효율적이다. 그럼 주로 어디에서 사용할까? 객체의 수명이 다할때 객체가 일시적으로 사용될 때 `std::move`로 인해 명시적으로 호출될 때 보통 이 세 가지 상황에서 사용되는데 다음..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 16:13

[C++11] Rvalue references

"Rvalue reference"는 C++11에서 도입된 기능으로 오로지 Rvalue에만 할당될 수 있는 새로운 레퍼런스이다. 이를 선언하는 방법은 다음과 같다. T&& // where T is non-template type parameter (such as int, or a user-defined type) 그럼 "Rvalue reference"가 어떻게 바인딩되는지 확인해보자. #include int main(void) { int x = 0; // `x` is an lvalue of type `int` int& xl = x; // `x1` is an lvalue of type `int&` int&& xr = x; // error -- `x` is an lvalue int&& xr2 = 0; // `..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 15:54

[C++11] Forwarding References(Universal References)

"Forwarding References" 혹은 "Universal References"은 C++11에서 도입된 기능으로, 주로 함수 템플릿의 매개변수로 사용되는 형태를 가리키는 용어다. 함수 템플릿으로 전달된 인자를 "원본의 값 카테고리와 레퍼런스 유형을 유지하면서 다른 함수로 전달하는 메커니즘"을 일컷는다. C++에는 Lvalue와 Rvalue이라는 값 카테고리가 있는데 주요 특징은 다음과 같다. Lvalue : 주소를 가질 수 있는 변수나 객체를 의미함. (변수, 포인터) Rvalue : 주소를 가질 수 없는 일시적인 값. (정수 리터럴) 이때 "Forwarding References"는 이러한 값 카테고리를 유지하면서 인자를 전달하는데 사용된다. Forwarding Reference의 생성 방법은..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 15:26

[C++11] Variadic templates

`...` 구문은 가변 인자를 받을 수 있게 된다. 가변 템플릿은 템플릿의 매개 변수로 여러 개의 인자를 받을 수 있도록 하는 기능이다. 이는 함수나 클래스 템플릿을 정의할 때, 인자의 개수가 동적으로 변할 수 있을 때 유용하게 사용된다. 이때, 인자의 갯수는 0개 이상을 받을 수 있다. 이렇게 최소 한개 이상의 가변 인자를 받는 템플릿을 "가변 템플릿"이라고 한다. #include template struct Arity { constexpr static int value = sizeof...(T); }; int main(void) { static_assert(Arity::value == 0, ""); // OK static_assert(Arity::value == 3, ""); // OK return ..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 14:57

[C++11] Initializer lists

"Initializer lists"는 C++11에서 도입된 객체를 초기화하는 데 사용되는 편리한 방법이다. 이는 "braced list(중괄호)"를 이용하여 만들 수 있는데 예를 들어 `{1, 2, 3}`은 정수의 배열을 만든다. 그리고 이 타입은 `std::initializer_list`가 된다. 이는 함수에 인자로 넘길 때 벡터 대신 사용하기 유용하다. #include int sum(const std::initializer_list& list) { int total = 0; for (auto& it : list) total += it; return total; } int main(void) { auto list = {1, 2, 3}; // `std::initializer_list` sum(list);..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 28. 13:56

[C++11] Static Assertions

`static_assert`는 C++11부터 제공되는 기능으로 컴파일 시간에 조건을 검사하여 컴파일 타임 에러를 발생시키는 역할을 수행하는 키워드이다. 이를 통해 컴파일 시간에 논리적인 조건을 확인하거나 특정한 제약을 검사하여 코드의 안전성을 높일 수 있다. `static_assert`의 기본 구조는 다음과 같다. static_assert(condition, message); `condition`: 검사하고 싶은 조건을 나타내는 표현식. 만약 이 조건이 `false`로 판단되면 컴파일 에러 발생 `message`: 컴파일 에러 메시지를 지정 예시: #include #include template void print_Int() { static_assert(std::is_integral::value, "T ..

C++/Modern C++(11, 14, 17, 20) 2023. 8. 26. 18:32

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 ··· 14
다음
TISTORY
deulee의 개발 노트 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.