Roble

0x00 정의와 성질 정의 성질 O(1)에 k번째 원소를 확인/변경 가능 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음 Cache hit rate가 높음 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸림 0x01 기능과 구현 어떤 배열에서 구현 - insert 함수 insert함수를 구현해 보면 void insert(int idx, int num, int arr[], int& len){ for(int i = len; i > idx; i--)//for문으로 순차적으로 값들을 오른쪽으로 이동시킴 arr[i] = arr[i-1]; arr[idx] = num;//새롭게 추가할 값을 넣기 len++;//용량이 부족하니 추가 } 구현 - erase 함수 erase함수를 구현해 보면 voi..
0x00 STL과 함수 인자 참조자(Reference) swap1 함수는 제대로 동작하지 않는걸 알 수 있다. 원본 2개를 바꾸고 싶은데 복사된 2개를 바꾼다한들 의미가 없는것. 그래서 swap2 함수처럼 포인터를 보내서 두 변수의 값을 바꿀 수가 있다. 그런데 C++에서는 해결법이 한 개 더 있는데, 바로 참조자(reference)이다. swap3 함수를 보면 함수 인자인 a와 b의 type이 int가 아니고, int 뒤에 &가 붙어있는 것을 볼 수 있다. 그러니까 a와 b는 int reference인 것이다. 저렇게 a와 b를 참조자로 만들면 함수 내의 코드에서는 그냥 int를 쓰듯이 tmp에 a를 대입하고, a에 b를 대입하고 하는데 저게 다 원본을 바꾸는 것이다. 참조자는 C에서의 포인터랑 거의 ..
0x00 시간, 공간복잡도 시간복잡도(Time Complexity) ★ 입력의 크기와 문제를 해결하는데 걸리는 시간의 상관관계 빅오표기법(Big-O Notation) 주어진 식을 값이 가장 큰 대표항만 남겨서 나타내는 방법 일단 5N+3을 보면 누가 봐도 N이 커지면 커질수록 3보다는 5N이 훨씬 크다. 그래서 3을 버리고 5N만 냅두는데, 5N에서 상수 5도 떼고 O(N)으로 나타낸다. 2N+10lgN에서도 N이 커지면 커질수록 10lgN보다는 2N이 훨씬 클테니 2N만 냅두고, 상수 2를 떼서 O(N)으로 나타낸다. N^2+2N+4에서는 N^2이 2N과 4보다 훨씬 크니 O(N^2)이 된다. NlgN과 N을 비교하면 아무래도 그냥 N보다는 lgN이 곱해진 NlgN이 더 클 것입니다. 그래서 NlgN ..
Spring Force Hooke's Law, 질점이 1개일 때 L0 : 용수철 원래 길이 L : 용수철 나중 길이 K : 용수철의 경직 정도 Fspring : 원래 길이로 돌아가려는 용수철의 힘 ∝ K Hooke's Law, 질점이 2개일 때 Damping Force Damper : 두 물체의 상대속도를 줄여준다. 즉, 두 물체의 속도가 비슷해지도록 만든다 ( 현관문이 쾅 안닫히도록 해주는 그 장치와 같다 ) 스프링이 출렁거리는 정도를 서서히 줄여준다 Spring Force : '길이의 차이' 에 의해 작용 됨 Damping Force : '속도의 차이'에 의해 작용 됨 덤핑 계수 d : 단위 속도 당 물체의 운동을 방해하는 힘 질점이 1개일 때 Damping Force in 1D :질점이 1개일때, ..
RigidCircle.h "공" 객체를 찍어낼 클래스를 포함한 헤더 #pragma once #include "Game2D.h" namespace jm { class RigidCircle { public: vec2 pos; vec2 vel; RGB color = Colors::hotpink; float radius = 0.1f; float mass = 1.0f; public: void draw() { beginTransformation(); { translate(pos); drawFilledCircle(color, radius - 1e-3f); setLineWidth(2.0f); drawWiredCircle(Colors::black, radius); } endTransformation(); } void u..
기본 틀 코드 #include "Game2D.h" #include "Examples/PrimitivesGallery.h" #include "RandomNumberGenerator.h" #include #include namespace jm { class RigidCircle { public: vec2 pos; vec2 vel; const float radius = 0.1f; void draw() // 원 그리기 { beginTransformation(); { translate(pos); drawFilledCircle(Colors::hotpink, radius - 1e-3f); setLineWidth(2.0f); drawWiredCircle(Colors::black, radius); } endTransfo..
어떤 클래스의 객체가 프로그램 전체에서 단 하나만 만들어지도록 하는 것. 오직 한개의 인스턴스만을 갖도록 보장. 그래픽스 엔진이나 사운드 엔진에 종종 사용 된다. 싱글톤을 사용하는 이유 1. 객체 생성 없이 사용될 수 있게 한다. 사운드 엔진은 여러가지 많은 클래스, 객체에서 많이 사용된다. 사운드 기능을 쓰는 객체마다 계속 사운드 엔진 객체를 생성해내고 매개변수로 넘기고 하는 것 너무 낭비. 2. 사운드 엔진 객체를 딱 하나를 여러곳에서 공유 할 수 있게 한다. 사운드 엔진은 객체가 여러개일 필요가 없다. 단 하나면 된다. 사운드 엔진의 기능들만 가져다 쓰면 된다. 사운드 엔진의 map 에 저장되어있는 사운드들 굳이 다 객체로 찍어낼 필요 없이 기존에 만들어진 사운드 엔진 객체를 공유하는게 더 효율적이..
명령과 행위 자체를 객체로 만듬 최대한 추상화 해서 변경 사항이 생기더라도 메인 무한루프를 가지는 메인 함수에서는 변경할 것이 없게끔 해야 좋다. 전체 코드 #pragma once #include "Game2D.h" #include namespace jm { class Actor { public: virtual void moveUp(float dt) = 0; virtual void moveLeft(float dt) = 0; virtual void moveRight(float dt) = 0; virtual void moveDown(float dt) = 0; }; class Command { public: virtual ~Command() {} virtual void execute(Actor& actor, ..
Roble
'분류 전체보기' 카테고리의 글 목록 (5 Page)