목록분류 전체보기 (225)
그냥 게임개발자
#region ScorllRect 특정 위치 public static Vector2 CalculateFocusedScrollPosition(this ScrollRect scrollView, Vector2 focusPoint) { Vector2 contentSize = scrollView.content.rect.size; Vector2 viewportSize = ((RectTransform)scrollView.content.parent).rect.size; Vector2 contentScale = scrollView.content.localScale; contentSize.Scale(contentScale); focusPoint.Scale(contentScale); Vector2 scrollPosition..
만약에 들어온 순서대로 정렬하고 싶으면? sort()가 아니라 stable_sort()를 써야 한다. #include #include #include using namespace std; int main() { // pair의 첫 번째 요소는 정렬할 값, 두 번째 요소는 원래 인덱스 vector pairs = {{2, 1}, {4, 2}, {5, 3}, {5, 4}, {3, 5}}; cout
배열이나 컨테이너의 요소를 정렬하는 함수이다. 보통 array나 vector를 정렬할 때 쓰인다. O(nlogn)의 시간 복잡도를 가지는 함수이다. sort()에 들어가는 매개변수는 총 3개이다. 2개는 필수이고 한개는 선택이다. sort(first, last, *커스텀 비교함수) first는 정렬하고 싶은 배열의 첫번째 이터레이터, last는 정렬하고 싶은 배열의 마지막 이터레이터를 넣으면 된다. 한마디로 first는 포함하고 last는 포함하지 않는다는 의미이다. 그래서 예를 들어 크기가 5인 a라는 배열 전체를 sort한다고 하면 sort(a, a + 5)라고 써야 한다. sort 매개변수에는 주소가 들어가니 a[0]이 아닌 a가 들어간다. last 배열에는 마지막요소가 아닌 그 "다음" 위치를 넣..
memcpy()와 똑같은 동작을 하는 함수이며 vector와 Array 모두 쓸 수 있다. copy (InputIterator first, InputIterator last, OutputIterator result) 만약 vector v를 ret에다가 옮기려면 vec : 복사당하는 vector / ret : 복사하는 vector copy(vec.begin(), vec.end(), ret.begin()); #include #include using namespace std; int main() { vector vec {1, 2, 3}; vector ret(3); copy(vec.begin(), vec.end(), ret.begin()); cout
깊은복사 얕은복사 들어봤을 거다. 깊은 복사(Deep Copy)는 새로운 공간을 확보해 아예 복사해버려서 새로운 것이 생겨서 값을 바꿔도 원본은 변하지 않음 얕은 복사(Shallow Copy)는 메모리 주소값만 복사해서 값을 변경하면 원본 값도 변경이되는 것 memcpy() memcpy()는 어떤 변수의 메모리에 있는 값들을 다른 변수의 "특정 메모리값"으로 복사할 때 사용 Array을 깊은 복사할 때 쓰인다. 문법은 아래와 같다. void* memcpy(void* destination, const void* source, size_t num); #include #include using namespace std; int main() { int v[3] = {1, 2, 3}; int ret[3]; mem..
int a[5] = {0, }; 이런 코드 본적있나? 난 없어 근데 이거 자주쓰인대요 그렇대 아무튼 이 코드 또한 0으로 초기화한다는 의미인데 문법은 아래와 같다. T myarray[N] = {0, }; 하지만 이렇게 초기화 하는 것은 초반에 한번하는 정적 초기화로써만 유효하지 동적초기화로써는 동작하지 않는다. #include using namespace std; int main() { int a[5] = {0, }; for (int i = 0; i < 5; ++i) a[i] = i; a[5] = {0, }; for (int i : a) cout
저번 포스팅에서 memset()은 0, -1로 초기화 한다고 했다. 기억 나는가? 기억하자 memset() memset()은 바이트단위로 초기화를 한다. 0, -1, char형의 하나의 문자(a, b, c, d 등)으로 초기화 할때만 사용 void* memset(void* ptr, int value, size_t num); memset(배열의 이름, k, 배열의 크기) 이렇게 사용한다. #include #include using namespace std; const int MAX_N = 1004; int a[MAX_N]; int a2[MAX_N][MAX_N]; int main() { memset(a, -1, sizeof(a)); memset(a2, 0, sizeof(a2)); for (int i = 0;..