[C++ STL] 개요
·
Programming/C++
각각의 주제에 대해서는 다른 글에서 자세히 설명하는 것으로 하고, 간단한 개념과 종류만 가볍게 살펴 보자. C++의 STL은 보통 세 개의 라이브러리를 의미한다.임의 타입의 객체를 보관할 수 있는 컨테이너(container)컨테이너에 보관된 원소에 접근할 수 있는 반복자(iterator)반복자들을 가지고 일련의 작업을 수행할 수 있는 알고리즘(algorithm)컨테이너 (Container)C++ STL 컨테이너는 크게 두 가지로 구분할 수 있다.배열처럼 객체들을 순차적으로 보관하는 시퀀스 컨테이너(sequence container)키와 대응되는 값을 찾아주는 연관 컨테이너(associative container)C++ STL 컨테이너의 종류는 다음과 같다벡터 (std::vector)리스트 (std::li..
팁 1
·
Programming/ETC
1. 한 개의 함수가 한 가지의 명확한 기능을 수행하는가? 하나의 함수가 여러 기능을 수행한다면 나쁜 함수. 하나의 함수/메서드는 논리적으로 구분되는 가장 작은 단위의 작업을 처리하는 것이 이상적이다. 2. 함수에 전달되는 Parameter가 적절한가? 3. Parameter의 올바른 IN/OUT 설정 4. 함수의 return이 명확한가? 5. 함수가 적절한 기능 단위로 잘 분리되어 있는가? 예를 들자면, 함수 안에 여러 함수들이 있을 수 있는데, 이때 각각의 함수의 역할이 명확하게 분리되어 있는지 확인 6. 함수의 쌍이 존재하는가? (선택적) 예를 들자면, insert라는 함수가 있는데, delete 함수가 없으면(삭제 코드가 함수가 아닌 다른 곳에 있는 경우 등) 뭔가 이상함. 7. 불필요한 최적화코..
정적 변수와 정적 함수
·
Game Development/Unity
1. Static -> 같은 클래스를 가진 모든 Object가 공유하는 하나의 변수. 즉 오브젝트 딴에서 관리하는 것이 아닌 클래스 부분에서 생성되어 정의되는 것. 해당 클래스를 가진 모든 오브젝트가 공유하는 특성이여서, 개별 오브젝트가 가지기에 어색한 기능에 사용한다. 2. static이 아닌 변수는 같은 클래스를 가진 오브젝트끼리 독립적이다. (메모리에 따로 할당됨) * static 변수는 오브젝트를 거치지 않고 바로 사용 가능 ex) 일반 변수였으면 object.var 이런 식으로 가져와야 하지만 정적 변수는 class.var 이런 식으로 클래스를 통해 바로 호출 가능 3. Static은 함수에도 사용 가능 -> 클래스 딴에서 관리한다는 것을 이용하면, 코드로 접근할 때 오브젝트를 거치지 않고 클래..
(C#)오버로드
·
Game Development/Unity
1. 오버로드 : 함수의 여러가지 버전을 만드는 것. 여러 형태의 인수에 대응가능한 함수를 만들 수 있다. 2. 선언 방법 : 함수의 이름을 똑같이 하되, 인수가 달라야 한다. public int Sum(int a, int b) { return a + b; } // 정수형 인수 세 개를 받기 위한 오버로드 함수 public int Sum(int a, int b, int c) { return a + b + c; } 2. 여러 인수뿐만 아니라 여러가지 자료형에 대응 가능하다. public int Sum(int a, int b) { return a + b; } // 다른 자료형을 받는 오버로드 함수 public float Sum(float a, float b) { return a + b; } public fl..
충돌 처리
·
Game Development/Unity
유니티에서 충돌은 오브젝트가 가지고 있는 Collider 컴포넌트를 통해 구현된다. 1. 함수 Collider를 트리거로 사용할 떄 - OnTriggerEnter(Collider other) 함수 : 트리거와의 충돌 감지 함수. 매개변수 other는 충돌한 물체를 가리킴. - OnTriggerStay(Collider other) : Trigger와 붙어있는 동안에 실행 - OnTriggerExit(Collider other) : Trigger와 붙어있다가 떨어질 때 실행 Collider를 트리거로 사용하지 않을 때 - OnCollisionEnter(Collision other) 함수 : 일반 Collider와 충돌했을 때 자동으로 실행. 매개변수 other는 충돌한 문체를 가리킴 - OnCollision..
포인터
·
Programming/C
포인터 포인터란 쉽게 말하자면 주소를 담는 변수다. 하지만 이렇게 말하면 헷갈릴 수도 있기 때문에 그냥 포인터도 하나의 자료형으로 생각하는 것이 편할 것이다. 즉, '특정 자료형 변수의 주소'를 다루는 자료형이라고 생각하는 것이다. // 포인터의 선언에 대해서는 아래 서술 int a; float b; char c; int* p; // int형 변수 a의 주소를 다루는 int*형 변수 p float *q; // float형 변수 b의 주소를 다루는 float*형 변수 q char* r; // char형 변수 c의 주소를 다루는 char*형 변수 r 포인터를 선언하는 방법은 변수 이름 앞에 *를 붙이는 것이다. 하지만 비주얼 스튜디오에서도 자동 완성으로 자료형 바로 뒤에 *가 붙는 것을 보아 int* p와 ..
메모리 할당과 주소
·
Programming/C
들어가기에 앞서, 메모리에 대해 기본적으로 알아야할 것이 있다. 메모리는 바이트 단위로 나뉜다.메모리 공간 한 칸의 크기는 1 바이트다.각 바이트마다 주소가 지정되어 있다. 이제 C 언어에서 변수를 선언할 때 메모리 할당이 어떤식으로 일어나는지 알아보자. 변수의 메모리 할당 & 할당되는 방식메모리 공간을 표현한다면 위의 표로 나타낼 수 있고, 각각의 칸은 주소(ex: 1024, 1025, 1026 ... 등)를 가진다. 이때 크기가 4 바이트인 int형 변수 a, b, c를 선언해보자. int형 변수 a, b, c는 변수의 선언과 동시에 메모리 상 빈 부분에 할당이 된다. 이때 꼭 알아야할 것은 변수가 메모리 상에 할당되는 방법이다. 변수의 할당을 쉽게 설명하자면, 해당 변수의 자료형의 크기만큼의 빈 칸..
문자열과 관련 함수
·
Programming/C
문자열 문자열은 쉽게 말하면 문자들의 연속, 즉 문자 배열이다. 예를 들어 Hello라는 문자열을 문자 배열로 표현하면 H E L L O \0 이다. 이때 주의할 점은 문자열의 끝에는 항상 널 문자(\0)가 붙는다는 것이다. 그렇기 때문에 문자형 배열에 문자열을 입력할 때는 배열의 크기가 항상 문자 개수 + 1 이상이여야 한다. 간단한 예제를 하나 살펴보자 #include int main(void) { char ss[8] = "Basic-C"; // 문자형 배열 int i; ss[5] = '\0'; // '-'를 널문자로 바꿈 printf("문자열 배열 ss => %s \n", ss); return 0; } 5번 줄을 살펴보자. 5번 줄의 코드는 크기가 8인 문자형 배열 ss을 "Basic-C"라는 문자..
snwdaaa
dev_log