예전 (133) 썸네일형 리스트형 [STL] 연관 컨테이너 ( set,multiset,map,multimap ) 연관 컨테이너 정렬 연관 컨테이너란, 컨테이너 내의 자료들이 규칙에 따라 연관, 정렬 되어있는 컨테이너이다.일정한 규칙으로 정렬되어있기 때문에 검색속도가 빠른 것이 장점이다. 모든 연관 컨테이너는 균형 2진 트리로 레드 블랙 트리이다.레드 블랙 트리란, AVL 트리로 삽입, 삭제 검색에서 최악의 경우에도 일정한 실행시간을 보장하는 것이다. 연관 컨테이너는 데이터를 Push한다는 의미보다는 트리에 Insert 한다는 의미로 Push함수 대신 Insert 함수를 가지고 있다. 그리고 AVL 트리 이므로 삽입 후 균형을 맞춘다. 연관 컨테이너는 저장된 데이터를 빠르게 검색할 목적으로 사용되므로 주로 검색을 하는 함수를 가지고 있고, 검색 시간은 log시간이다. 양방향 반복자를 사용한다. Set Set과 mul.. [C++] 연산자 오버로딩 연산자 오버로딩 • 연산자란? 연산자란 연산을 하기 위해 필요한 것으로 C++에는 많은 연산자가 있다.연산자에는 기본적인 사칙연산 ( +, - , * , / , % ) 이나 대입연산( = ), 관계연산, 논리연산자가 있다.연산자 오버로딩을 통해 이 많은 연산자들을 오버로딩 할 수 있다. • 오버로딩이란? 오버로딩은 함수의 이름이 같고, 시그니쳐의 타입 혹은 개수에 따라 함수가 구분되는 것을 말한다. 여기서 리턴 값, 즉 반환형은 중요하지 않다. 그렇다면 연산자 오버로딩이란 무엇일까? • 연산자 오버로딩이란? 연산자 오버로딩이란 C++에서 연산자가 하는 일을 함수로 개인의 필요에 맞게 구현한 것이다. 예를 들어, 클래스의 성격에 따라 필요한 연산 기능이 있다면 그에 맞게 동작하도록 기본 연산자의 기능을 재.. [C++] 생성자 소멸자 생성자 소멸자 생성자( Constructors )란 클래스 객체를 생성할 때 자동적으로 호출되는 함수고, 소멸자( Destructors )란 클래스 객체가 소멸될 때 자동으로 호출되는 함수이다. 생성자 소멸자에서 중요한 개념은 호출 시점, 하는 일, 생성자의 종류 등 여러가지가 있다. 특징 생성자는 클래스와 동일한 이름이고, 반환 값이 없다. 소멸자도 마찬가지로 반환 값이 없고 함수이름 앞에 '~' 표시가 있다. 하는 일 생성자는 객체를 생성할 때 자동적으로 호출된다. 고로 객체 생성시 클래스에서 필요한 일들을 해주면 된다.즉 객체가 제대로 동작할 수 있게 준비하는 일이다. 그 일에는 첫번째로 멤버 변수를 초기화 하는 일이 있다. cState라는 클래스를 만들어보자. #include "cState.h" .. [API] LRESULT 와 HRESULT LRESULT 와 HRESULT HRESULT HRESULT는 반환형중 하나로 본 목적은 외부와 내부 코드의 충돌예방을 위해 코드의 에러를 배치하는 것이였다.HRESULT내에는 에러코드의 본형과 출처에 대한 다양한 비트정보를 가지고 있다. 이는 보통 COM프로그래밍에 들어간다. COM 프로그래밍인터페이스에 소속된 대부분의 함수는 HRESULT 의 반환값을 가진다. 일반 반환형과 똑같이 사용하며 리턴 형은 SUCCEEDED/FAILED 이다. 하지만 굳이 값을 받지는 않아도 된다. if(FAILED(CreateWindow(...)) // 사용 예 1 MessageBox(L"윈도우 생성에 실패 했습니다."); CreateWindow(...) // 사용 예 2 사용 예 1과 2의 결과물 차이는 없다. 특별히 .. [API] Message Deadlocks ( 메시지 데드락 ) 메시지 데드락 메시지 데드락은 메시지의 교착상태이다. 데드락이란 프로세스들의 집합이 더 이상 진행을 못하고 블록이 되어있는 상태로 시스템자원에 대한 경쟁도중에 발생할 수도 있고, 프로세스간 통신중에 발생한다.서로 충돌이 되는 자원을 요구하기 때문에 데드락이 발생한다. SendMessage함수는 메시지를 받은 윈도우 프로시저를 리턴하기 전에는 리턴하지않는다. SendMessage 호출은 곧 서브루틴 호출과 대등하며 실제로 WndProc의 case 하나를 호출하는 것과 같다. 만약 SendMessage를 받은 대상이 어떠한 이유로 10초 후에 반환을 하게 되었다면 메시지를 보낸 대상은 10초간 데드락 상태에 빠지게 되어 어떠한 것도 할 수 없는 상태가 되어버린다. 해결 방법 메시지가 다른 스레드로 부터 전달.. [API] 모달 과 모달리스의 차이 (modal modeless) 모달 , 모달리스 윈도우의 Form (형식)이나 Dialog (대화상자)를 모달 혹은 모달리스로 표시할 수 있다. 그렇다면 모달이 무엇일까? 모달 간단히 말해 새 모달 창이 열렸을 땐 기존에 있던 창을 사용하지 못하는 방식이다. 예를 들어 어떠한 응용프로그램에서 에러 메시지가 뜬다고 가정하자. 그 메시지를 확인 또는 취소를 눌러야만 다음으로 진행이 가능하고, 그 메시지가 뜬 상태라면 뒤에 있는 창을 선택할 수 없다. 어렵게 말하면 어느 다이얼로그 창이 프로그램의 제어권을 독점해서 이 창이 종료되기전엔 다른 작업을 할 수 없는 것으로 다른 작업을 할 수 없다는 말은 현재 발생한 모달 다이얼로그의 부모 창을 의미 하며 다른 윈도우 창은 별개로 작업이 가능하다. 중요한 메시지를 표시하는 다이얼로그는 거의 모달.. [API] Virtual Key Value WinUser.h에 다음을 추가하면 VK_UP과 같이 쓸 수 있다. #define VK_A 0x41#define VK_B 0x42#define VK_C 0x43#define VK_D 0x44#define VK_E 0x45#define VK_F 0x46#define VK_G 0x47#define VK_H 0x48#define VK_I 0x49#define VK_J 0x4A#define VK_K 0x4B#define VK_L 0x4C#define VK_M 0x4D#define VK_N 0x4E#define VK_O 0x4F#define VK_P 0x50#define VK_Q 0x51#define VK_R 0x52#define VK_S 0x53#define VK_T 0x54#define VK_U 0x55#de.. [STL] 연관 컨테이너 ( set,multiset,map,multimap ) set 과 multiset , map, multimap은 연관 컨테이너이자, 노드 기반 컨테이너이다. 모든 연관 컨테이너는 균형 이진 트리로 레드블랙트리이다.레드블랙트리란 AVL 트리로 삽입, 삭제, 검색에서 최악의 경우에도 일정한 실행시간을 보장하는 것이다. ( AVL 트리 : 자식노드와의 높이차이가 1보다 크지 않은 것으로 그 균형을 맞추기 위해 회전한다. ) 연관 컨테이너는 데이터를 push한다는 의미보단 트리에 insert한다는 의미로 push함수 대신 insert함수를 가지고 있다. 연관 컨테이너는 저장된 데이터를 빠르게 검색할 목적으로 사용되므로 주로 검색류의 함수를 가지고 있다.그리고 양방향 반복자를 사용한다. 검색시간은 log시간이다. 1. set각 노드마다 다른 key가 있는 컨테이너이다.. 이전 1 ··· 12 13 14 15 16 17 다음