본문 바로가기

cpp32

[QT] 애니팡 - 애니메이션 넣기 들어가며 이번 애니메이션 넣기는 어제부터 시도했는데 오류가 계속 발생해서 정말 힘들게 버그를 잡아냈습니다. 그래도 버그를 잡아내니 참 뿌듯하네요. 그리고 모든 코드를 넣기보단 새롭게 추가된 코드 위주로 넣었습니다.애니메이션 넣기Consts.h// 애니메이션 시간 1칸당 200msconst int ANIMATION_TIME = 200;Item.h// 애니메이션을 위한 QObject 상속class Item : public QGraphicsPixmapItem, public QObject// EventListener 에 itemMoveFinished 추가virtual void itemMoveFinished(Item* item0, Item* item1, bool canRevert) = 0;Board.h// 3ma.. 2024. 8. 28.
[백준] 18870번 좌표 압축 - C++ 좌표압축시간 제한메모리 제한2 초512 MB문제수직선 위에 N개의 좌표 X1, X2,..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2,..., X'N를 출력해 보자.입력첫째 줄에 N이 주어진다.둘째 줄에는 공백 한 칸으로 구분된 X1, X2,..., XN이 주어진다.출력첫째 줄에 X'1, X'2,..., X'N을 공백 한 칸으로 구분해서 출력한다.제한1 ≤ N ≤ 1,000,000-109 ≤ Xi ≤ 109예제 입력 1예제 출력 1 52 4 -10 4 -92 3 0 3 1예제 입력2예제 출력 261000 999 10.. 2024. 8. 26.
[C++] C++ 20 Ch 10. C++ 20Modules// module은 include 의 많은 단점들을 보완함// - 매번 헤더를 소스 파일에 복사/붙여넣기 하는 것// - pragam, ifndef 등을 사용하지 않게 됨// - 헤더 내부에서 의도하지 않은 것들에 대한 공개사용자 정의 모듈export module moduleName;export void swap(int& a, int& b){}main.cppimport moduleName;int num0 = 10, num1 = 20;swap(num0, num1);Concepts템플릿 파라미터에 제약을 거는 것templateconcept NonPointer = !std::is_pointer::value; // concept 을 이용하면 template 에 대한 제약을 .. 2024. 8. 26.
[C++] Modern C++ Ch 09. Modern C++auto이전에는 자동지역변수로 할당하는 용도였지만 C++ 11부터는 타입 추론의 역할을 한다. auto i = 10; // intauto j = 10u // unsigned intauto를 사용하면 가독성을 높이고 실수를 줄일 수 있다.std::vector v;std::vector::iterator iter0 = v.begin();auto iter1 = v.begin(); // 이 경우는 가독성에서 유리하다. 위의 경우 타입이 너무 장황함Person* person0 = new Person;auto person1 = new Person; // 좌변의 Person을 생략하여 중복되지 않는다.std::map m;for (const std::pair& pair : m) {} //.. 2024. 8. 26.
[C++] STL Ch 08. STLSTL의 개요Standard Template Library의 약자로 컨테이너, 이터레이터, 알고리즘으로 구분할 수 있다.Sequence Containers 에는 vector, deque, list, forward_list, array 가 있다. 사용자가 값을 넣는 순서에 영향을 받는다.std::vector vector;vector.push_back(10);vector.push_back(20);vector.push_back(-1);// 넣어주는 순서대로 출력, Sequence Containercout Odered Associative Containers 에는 set, multiset, map, multimap 이 있다. 사용자가 값을 넣는 순서에 상관없이 정렬된 형태로 나온다.std::s.. 2024. 8. 20.
[QT] 애니팡 - 마우스 이벤트 받기 들어가며 오늘은 저번에 했던 이미지 배치를 이어서 마우스 이벤트 받는 것을 해보겠습니다. 한 아이템에서 드래그했을 때 드래그 방향의 아이템과 위치가 바뀌는 것을 목표로 합니다.마우스 이벤트 받기 우선 기존의 QGraphicsPixmapItem을 프로젝트 성격에 맞게 이용하기 위해 상속해서 Item 클래스를 구현합니다. Item클래스는 자신의 좌표와 이미지를 갖고 있고 마우스 이벤트를 받습니다. 그리고 아이템 클래스에 중첩 추상 클래스로 EventListener를 정의합니다. Item 클래스는 생성 시 EventListener를 상속한 객체의 주소를 받고 이를 통해 가상함수 itemDragEvent를 호출합니다.Item.h#pragma once#include #include class Item : publ.. 2024. 8. 20.