C++11에서는 기존 C++98 복사 생성과 다르게 이동 연산(move)이 생겼는데, 개념적인 설명은 다른 블로그나 Youtube에서 잘 설명하고 있었습니다. 그런데, 개념만으로는 조금 부족하다고 생각이 들었습니다. C++에 능숙하지 않거나, 다른 프로그래밍 언어에 익숙하지 않으신 분들이라면 이해도 잘 안 되는 이걸 왜 써야 하나.. 필요성을 못 느낄 수 있다고 생각합니다. 어려워서 안 쓸 수 있는 문제점이 있는데, 그래서 실제로 복사 연산과 이동 연산의 실행시간을 비교해보면서 성능에 대해 살펴보고 써야 하는 이유를 한 번 찾아봅시다. 우선 복사, 이동 연산을 살펴보기에 앞서 간단히 함수 호출, 클래스 생성 시 내부적으로 어떻게 실행되는지부터 살펴봅시다. #include #include #include ..
가끔 꼭 필요한 Map 컨테이너에 대해서 알아보겠습니다. Map에 대한 정보는 C++ Reference를 참고했습니다. www.cplusplus.com/reference/map/map/?kw=map map - C++ Reference difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t www.cplusplus.com 1. Map의 특성 Map은 Key와 Value의 쌍을 특별한 순서로 저장하고 있는 연관 컨테이너(associative container)입니다. 이진 트리로 구현되어있고, Key를 통해 Value에 접근하고자 할 때, [] 연산자를 사..
학부 저학년 때 개발했던 프로그램입니다. 그때는 성능보다는 개발을 우선으로 해서, 과제용으로는 충분할지 모르겠으나 어디 보여주기엔 좀 그래서... 외장하드에 묻어두다가 그래도 그때 개발했던 내용을 공유하고자 글을 씁니다. 그리고 그때 부족하다고 생각했던 부분들을 수정해서 성능도 훨씬 끌어 올렸습니다. 처음엔 C로 구현을 했으나, heap 같은 라이브러리를 사용하기 위해 C++로 구현했습니다. ( C에서 직접 구현해서 사용해도 괜찮습니다) 0. 주저리주저리 허프만코드를 사용해서 압축을 한 프로그램입니다. 결국엔 파일을 읽어서 빈도수를 구한 뒤 허프만 코드를 만들고, 1byte에 1bit씩 채워나가면서 프로그램을 압축하는 형식입니다. 프로그램은 압축, 압축해제 2개의 큰 부분으로 나뉩니다. 압축은 허프만트리..
0. Flow chart 이런 개발 쪽에서 가장 중요한 Flow chart(순서도)부터 정의해봅시다. 진~~~ 짜 핵심적인 부분만 간단하게 하면 위의 순서도와 같다. 이거보다 더 단순하게 하기는 어려울 것 같다. 물론 저 순서도에서 박스 하나하나 마다 안에 코드는 많지만 크~게 보자면 위의 순서도와 같겠다. 전체 코드를 설명하기보다는 이 전 포스팅의 https://kibbomi.tistory.com/161 [C++ / 2인용] 테트리스 개발 ( Class 부분 ) 학부 2학년 1학기 때 만들었던 테트리스.. 몇 년이 지나 이제야 올려봅니다. 가장 처음, 어떤 기능을 가진 Class들을 정의할 것인지 봐야 한다. GUI는 적용하지 않고 Console환경에서 실행할 것이다. Cl kibbomi.tistory..
학부 2학년 1학기 때 만들었던 테트리스.. 몇 년이 지나 이제야 올려봅니다. 가장 처음, 어떤 기능을 가진 Class들을 정의할 것인지 봐야 한다. GUI는 적용하지 않고 Console환경에서 실행할 것이다. Class는 간단한 것에서부터 복잡한 거 순서대로 설명하겠습니다. 1. Point Class 흔히 PS에서도 접해볼 만한 Point Class. 배열의 y, x를 다루는데 class형태로 만들어서 조금 부가적인 기능을 더 해준 형태라고 보면 된다. #ifndef KIBBOMI_POINT #define KIBBOMI_POINT ///배열의 좌표, Console화면의 좌표를 설정 class Point { public: Point(int x = -1, int y = -1); int GetX() cons..
여러 가지에 사용되는 Set 컨테이너에 대해서 알아보겠습니다. Set에 대한 정보는 C++ Reference를 참고했습니다. 1. Set의 특성 Set은 Unique한 원소들을 특별한 순서에 따라 저장하는 컨테이너입니다. 여기서 Unique한 원소들은 정수를 예를 들면, 1이라는 원소는 Set 컨테이너 안에 단 1개(Unique)만 있을 수 있음을 의미합니다. Set안에 한 번 삽입한 데이터는 수정할 수 없습니다. 하지만 Insert, remove를 통해서 삽입 제거는 할 수 있습니다. Set은 보통 이진 탐색 트리로 구현되어 있습니다. 마지막으로 원소는 컨테이너 내에서 절대적인 위치로 존재하는 것이 아닌 키에 의해서 서로서로 연관되어 위치해있다.(정렬 규칙에 의해 상대적인 위치에 있음. 즉, 서로 연관..