일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 원카페#무인카페#카페추천#카페맛집
- Harvard
- 브론즈
- 메테리얼
- UE_5
- 헤더 경로
- STL
- 툰쉐이딩
- C++
- build.cs
- 백준
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- Console
- CS
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- Module
- 네트워크 기초
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- topdownmove
- Gas
- leetcode
- CS50
- 폭설 #미친 날씨
- Toon Shading
- A* Algorithm
- c++ 베이직
- 코드리뷰
- 언리얼
- 순환 리스트
- Unreal
- Today
- Total
목록C++ (28)
WN_인생기록
변수 타입int형 -음,양 의 정수short(int형)long(int)long longunsigned int 0을 포함한 양수만 표현 가능한 정수 float 부동소수점double배정밀도 부동소수점char8비트 문자bool논리타입 (true,false를 나타냄)변수는 캐스팅을 통해서 다른 타입으로 변환할 수 있다. float->int 가 가능. static_cast(변수) 같은 명시적인 캐스팅 방법이 있으나 그냥 (타입) 변수 같이 써도 된다. 그런데 이때는 데이터 손실을 유의해야 한다.
C / C++ 차이점?C는 절차지향적이고, C++은 객체 지향적이다C의 불편한 부분과 비합리적인 부분을 개선하는 목적으로 나온게 C++ 이다.C++ 프로그램의 빌드 과정C++ 라는 언어로 이루어진 프로그램은 크게 세단계로 나뉘어서 빌드 된다. 전처리 -> 컴파일 -> 링크전처리지시자# 문자로 시작하며, 헤더파일들의 코드를 가져와서 소스 파일에 삽입하는 역할을 한다.(헤더 파일에서 선언한 변수, 기능들을 cpp 파일이 인식할 수 있도록 삽입하는 것)흔히 #include 만 알고 있는데 , #ifndef ~ #endif 같은 형식으로 둘러싸면, 특정 소스 내에서 같은 헤더 파일을 여러번 include 하더라도 한번만 include 되게 하는 기능도 있다.더 간단한건 #pragma once 라는 기능을 사용..
C++을 배우고 공부하고 쓰고 있지만, 정작 남에게 설명해줄 수 있는 실력이 되는가? 로부터 시작하는 시리즈가 될 예정이다. 면접 준비도 할겸 너무 자세히는 말고 간단한 예제와 기본 개념들을 짚어볼 것이다. 기본적인 개념들은"전문가를 위한 C++" 이라는 책을 기준으로 진행할 예정이다.
1. const int*, int const* int* const 차이점 -> const 가 어디에 붙어있는지 물어보는 질문 -> 기본적으로 const 는 상수라는 의미를 가지고 있는데, const + 변수형 + 변수이름 인 경우에는 변수이름을 가진 데이터가 변할수 없는 상수 라는 의미를 가짐. -> const int* (변수명) 은 변수가 가지고 있는 데이터의 값이 상수임을 나타내는것. 그렇기 때문에 해당 포인터가 다른 변수를 가리켜도 컴파일에는 문제가 없다. -> int* const (변수명)은 포인터 자체가 상수임을 나타내는것. 그렇기 때문에 해당 포인터가 가리키고 있는 데이터의 값이 변경되어도 컴파일에는 문제가 없으나, 포인터가 가리키는 변수 자체는 변경할 수 없다. int num = 3; ..

2차원 배열에 대해서 공부하다가, 터미널 창에 일정한 크기로 배열을 출력하고 싶었다. " " 로 처음에 했으나, 10자리부터 계속 밀려서 원하는대로 출력이 안되었다. 그래서 STL을 찾아보던 중, 일정한 간격으로 출력이 가능한 기능을 찾았다. iomanip STL 자체가 입력 출력 스트림 형식을 조절하는데 사용하는 라이브러리였고 그 중에서 setw(n) 라는 기능으로 공백을 조절할 수 있었다. left,right로 정렬까지도 할 수 있고 생각보다 유용했다. 또다른 기능으로는 fixed -> setprecision(n) 이라는 기능인데 소수점을 원하는대로 출력할 수 있게 하는 기능이다.
헤더에 있는 함수이며 사전순으로 오는 순열을 생성하는 기능을 가지고 있다. 특히 완전탐색이라던가 조합의 모든 경우를 구하는 문제에서 주로 활용할 수 있을거 같다. 사용할때는 주로 do while 문과 자주 쓰이게 된다. 왜냐하면, 함수가 호출될떄마다 주어진 범위의 요소를 순열로 배치하기 때문에 모든 순열을 반복할 수 있다. (do while로 처음 상태까지 포함해서 배치) sort(numbers.begin(), numbers.end()); do { for (int j = 1; j

이제는 본격적인 A* 에 대해 진행할 예정이다. 이전의 포스트를 올리면서 코드를 분석해보니, 생각보다 이해안되었던 부분들도 하나하나 보면서 이해했다. void Solve_AStar() { //전체 노드 훑으면서 for (int x = 0; x < nMapWidth; x++) { for (int y = 0; y < nMapHeight; y++) { // 초기화 시키기 nodes[y * nMapWidth + x].bVisited = false; nodes[y * nMapWidth + x].fGlobalGoal = INFINITY; nodes[y * nMapWidth + x].fLocalGoal = INFINITY; nodes[y * nMapWidth + x].parent = nullptr; } } // 두 ..

앞에 포스트에서 기초 세팅이 끝났으니, Update를 해야한다.(아직 그려진거 없음) virtual bool OnUserUpdate(float fElaspedTime) { // 노드의 사이즈와 두께를 정해준다. int nNodeSize = 9; int nNodeBorder = 2; // 마우스 위치를 기반으로, 노드 단위의 위치 식별 int nSelectedNodeX = m_mousePosX / nNodeSize; int nSelectedNodeY = m_mousePosY / nNodeSize; // 마우스를 놓으면 if (m_mouse[0].bReleased) { // 맵의 노드 범위 안에서 if (nSelectedNodeX >= 0 && nSelectedNodeX < nMapWidth) { if (n..