본문 바로가기

전체 글96

[C++] multiset 헤더파일 : 장점 단점 많은 데이터를 저장한다. 검색 속도가 빠르다. 중복을 포함해 자동 정렬된다. Key == Value 적은 양의 자료를 사용할 경우 오버헤드로 인한 손해 발생 기본 : 오름차순 multiset로 내림차순으로 생성, 사용 가능 주의점 다른 자료구조와는 다르게 iterator에서 + 연산자를 지원하지 않는다. multimap m; for(int i = 0; i < 10; i ++) { m.insert(i); } auto iter = m.begin() + 1; // X 사용불가능 컴파일오류 iter = ++m.begin(); // O 사용가능 ++, -- 연산자는 정상 작동하기 때문에 m.begin() + 2의 위치를 참조하기 위해선 auto iter = ++m.begin(); iter+.. 2022. 11. 24.
[C++] 비트 연산, 비트맵마스크 비트맵 마스크 정수의 이진수 표현을 자료 구조로 쓰는 기법 장점 수행시간 빠르다. 코드가 짧다. 메모리 사용량이 적다. char : 1byte true, false 표현하기 위해 1bit만 쓰고 있음 char의 8bit를 비트맵 마스크를 이용해서 사용하면 char 하나로 char c[8]; 의 사용 효과를 누릴 수 있다. 유니티에서는 레이어간 충돌 여부 등을 설정할 때 이러한 비트맵 마스크 사용함 설명을 위해 간단하게 4bit를 가지고 그림을 그렸음 0번 콜라이더 / 2번 콜라이더 충돌 처리를 한다. 1번 콜라이더 / 2번 콜라이더 충돌 처리를 한다. 2번 콜라이더 / 3번 콜라이더 충돌 처리를 한다. 3번 콜라이더 / 3번 콜라이더 충돌 처리를 한다. 위 처럼 나타내면 (0,2) (2,0)과 같은 동일.. 2022. 11. 20.
[C++] 벡터 중복 제거 벡터의 중복 제거를 위해선 sort(), unique(), erase()를 적절히 사용하면 중복원소를 제거 할 수 있다.. #include #include #include using namespace std; int main() { vector s; s.emplace_back(2); s.emplace_back(2); s.emplace_back(3); s.emplace_back(1); s.emplace_back(2); s.emplace_back(1); for(auto i : s) { cout 2022. 11. 19.
[Algorithm] 약수 구하기 for(int i = 1; i 2022. 11. 18.
[WinAPI] 키 입력 관리 게임 로직의 GetAsyncKeyState()의 문제점 동일 프레임에서 먼저 실생하는 로직에서 입력을 받아 true가 나오고 뒷부분의 처리엔 키를 누르지 않아 false가 나오는 등의 동기화 문제가 생길 수 있다. KeyDown, KeyHold, KeyUp을 판단하려면 추가적인 코드를 써야 판단이 가능하고 키 입력 판단 할 때마다 코드를 적어야 하니까 불편함 비동기적으로 처리되어 윈도우가 포커싱되어 있지 않아도 동작한다. (최소화 상태에서도 동작함) KeyManager를 따로 생성하여 관리하여 위의 문제점들을 해결한다. KeyManager에서 키 입력을 판단하고 그 값을 통해 동작하도록 한다. 키값에 해당하는 배열을 매칭해서 Down, Hold, UP 쉽게 판단 가능 포커싱 x 상태의 경우도 일괄로 처리.. 2022. 11. 15.
[WinAPI] DC, BITMAP, 더블버퍼링 더블버퍼링 싱글 버퍼링으로 화면을 그릴 경우 화면을 다 그리기 전까진 다음 그림을 그릴 수 없기 때문에 깜빡이는 문제점 이 발생합니다. 이 문제는 (화면출력 -> 초기화 -> 화면출력)를 반복하며 초기화 부분에 순간을 포착해서 생김 위에서 발생하는 깜빡임 문제를 해결하기 위해 사용되는 기법 버퍼 2개로 렌더링 처리를 하는 것 입니다. 한쪽은 보여주고 한쪽은 화면을 그리고 화면을 다 그렸다면 보여주고 반대편은 다시 그리고 이 동작을 반복한다면 깜박임 문제를 해결할 수 있습니다. DC 출력에 필요한 모든 정보를 가지는 구조체, 모든 출력함수는 DC를 참조하여 출력한다. 출력을 하기 위해 DC를 사용해야한다. HDC hdc = GetDC(hwnd); GetDC()로 DC 받아오고 ReleaseDC(hwnd, .. 2022. 11. 15.