우선 순위 큐 (Priority Queue) 우선 순위 큐는 큐나 스택과 비슷한 축약 자료형이다. 예를 들면 일반적인 큐는 선입 선출의 특성이 있고 스택은 후입 선출의 특성이 있다. 또한 우선 순위 큐는 힙이라고 생각을 하는데 이는 오류이다. 우선 순위 큐를 구현하는 방식에 따라 다양한 방법으로 구현 가능하다. 우선 순위 큐를 배열이나 연결리스트로 구현하지 않는 이유는 아래와 같다. 1. 배열로 구현한 경우 우선 순위가 중간인 데이터가 삽입되는 경우 데이터가 삽입되는 위치 부터 모든 데이터를 한칸씩 뒤로 미뤄야하는 문제가 발생하며 시간 복잡도(time complexity)가 O(n)이다. 2. 연결리스트로 구현한 경우 우선 순위가 중간이 데이터가 삽입되는 경우 데이터가 들어갈 위치를 탐색해야하는데 O(n)만큼 걸린다. 3. 힙으로 구현한 경우 힙은.. Dialog 영역 명칭 MFC 작업중 화면을 Customize 할 경우가 생겨 아래와 같이 정리를 해둔다. 모든 window 영역은 Customize가 가능하다. 주의 사항 1. Dialog의 작업 영역과 비 작업 영역의 경계에 선이 나타날 수 있다. 적절하게 변경하여 작업을 진행 할 것 2. Dialog의 창 작업은 비 작업 영역이므로 OnNcPaint()에서 진행하여야한다. 참고 자료 1 : velog.io/@springkim/MFC-%EC%B0%BD-%EC%BB%A4%EC%8A%A4%ED%85%80-%EA%B8%B0%EB%B3%B8 [MFC] 창 커스텀 기본 ###Frame 아래의 함수들은 CFrameWnd 또는 CFrameWndEx를 상속받은 클래스의 메소드에서 이루어 진다. ######1. 시스템 버튼[최소화/최대화/.. 부팅 시 프로그램 자동 실행 - Ubuntu 24시간 수행되어야하는 프로그램의 경우 PC가 재부팅이 되었을 경우 자동으로 실행되어야 한다. 이를 해결하기위해 아래와 같은 것을 설정하여 해결하여 기록으로 남긴다. 1. 자동 로그인 설정 2. 계정 변경시 비밀번호 해제 - /etc/sudoers 내용 변경 : %sudo ALL=(ALL:ALL) ALL ->%sudo ALL=(ALL)NOPASSWD: ALL - 특정 계정만을 설정 할 수도 있으면 프로그램 실행 권한에 따라 진행하지 않아도 된다. 3. 프로그램 실행 스크립트 작성 - 계정 변경 시 시작 위치를 사전에 지정해 두었다면 경로 변경은 필요 없음 - 시작할 프로그램의 파라미터가 있다면 사전에 스크립트를 작성하여 시작 4. startup application 등록 에라토스테네스의 체 정의 정 범위안에서 소수를 찾는 방법이다. 알고리즘 1. 특정 범위 안의 수 중 가장 작은 소수의 배수를 모두 제외시킨다. 2. 특정 범위 안의 수 중 그다음으로 작은 소수의 배수를 모두 제외 시킨다. 3. 2번의 과정을 반복적을 진행하고 나면 특정 범위 안의 소수가 남는다. 특징 특정 범위가 480이라고 가정하면 22^2 > 480 이므로 22보다 작은 수의 배수들만 지원도 충분하다. 참고 자료 1 : ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가.. prev_permutation(), next_permutation() #include 해더에 정의 되어 있으며 permutation 의 뜻은 순열이다. 함수명 그대로 prev_permutation은 이전의 큰 순열로 요소 순서를 재정렬한다. 함수명 그대로 next_permutation은 다음으로 큰 순열로 요소 순서를 재정렬한다. 아래는 next_permutation()과 prev_permutation()이해를 돕기 위한 예제 코드와 해당 결과이다. 참고 자료 1 : docs.microsoft.com/ko-kr/cpp/standard-library/algorithm-functions?view=msvc-160#prev_permutation 함수 자세한 정보: 함수 docs.microsoft.com 참고 자료 2 : docs.microsoft.com/ko-kr.. Thread 및 Process를 CPU Core에 할당 1. Cpu Core에 process 할당 : 특정 Process를 특정 CPU에서 실행되도록 설정 BOOL SetProcessAffinityMask( HANDLE hProcess, DWORD_PTR dwProcessAffinityMask ); 2. Cpu Core에 Thread 할당 : 특정 Thread를 특정 CPU에서 실행되도록 설정 DWORD_PTR SetThreadAffinityMask( HANDLE hThread, DWORD_PTR dwThreadAffinityMask ); 주의 사항 2번째 인자 DWORD_PTR은 2의 제곱근으로 동작 = Bit로 계산되어 동작 CPU 0에 할당 시 : 1 또는 1 C2872 참조하는 기호가 중보되는 경우 발생하는 오류이다. 따라서 참조 기호를 명확하게 명시 하거나 선언의 위치를 다시 검토 하기 바란다. 필자는 영상처리 라이브러리 opencv를 사용하면서 종종 C2872를 마주하였다. 보통 아래 글귀로 보게된다. error C2872 : ACCESS_MASK : 모호한 기호입니다. using namespace cv와 winnt ACCESS_MASK와 중복되어 발생하는 컴파일 오류이다. 해결 방법은 2가지가 있다. 1. #include 선언을 모든 opencv 관련 해더 선언 보다 위에 선언하는 것이다. 2. 모호한 위치에 참조 선언을 명확하게 표기 하는 것이다. 참고 자료 1 : docs.microsoft.com/ko-kr/cpp/error-messages/compiler-e.. CAsyncSocket Connect() 문제점 이 글은 추후에 참고하기위해 작성되었다. 정확하지 않은 내용이 있을 수 있으니 그저 참고용도로만 보길 바란다. winsock 또는 CSocket을 이용하여 socket통신을 개발하는 경우에는 connect() 함수의 반환 값에 따라 서버와 클라이언트가 정상적으로 연결되었는지 안되었는지를 알 수 있다. 하지만 CAsyncSocket을 이용한 경우 connect()함수의 반환값에 따라 정상적으로 처리가 되었는지 안되었는지 알 수 없는 문제가 있다. 이 때에는 GetLastError() 함수를 통해 에러값을 확인하고 OnConnect()를 재정의 함으로써 해결할 수 있다는 글이 있지만 실제로 시도해본 결과 정상 연결을 확인하는 것에는 무리가 있음을 확인하였다. 필자가 확인 못한 내용이 있을 수도 있다. 필자는.. 이전 1 2 3 4 5 6 7 8 다음 목록 더보기