목록내 개인적인 공부 (60)
그냥 게임개발자
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bgWazg/btsGBXVw7P2/YGqHpm6UrKHX0VvsBvHyXk/img.png)
정적배열이에요. 아시죠? int cArr[10]; // c스타일 array stdArr// std스타일 스타일 방식은 거기서 거기다 익숙한거 사용합시다. vector와는 다르게 함수가 없어요. 배열을 코드로 직접 사용해보죠. 직접 손으로 쓴 것과 눈으로 대충 흝어보는것은 완전히 달라요. 공부하기로 마음 먹었으면 손으로 직접 써주세요. #include using namespace std; int arr[3] = { 1, 2, 3 }; int arr2[] = { 1, 2, 3, 4 }; int arr3[10]; int main() { // 1, 2, 3 for (int i = 0; i < 3; ++i) cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clg7FU/btsGC1pkoVu/v5gznkCUPkNqbRu6Y9bcNk/img.png)
아 이건 C#에서도 해봤어요 C#에서 되었는데 C++이라고 안될게 있나요? 그러겠죠..? vector를 이용해서 2차원 배열을 만드는 방법은 3가지가 있어요. #include #include using namespace std; int main() { vector vec; vector vec2(10, vector(10, 0)); vector vec3[10]; for (int i = 0; i < 10; ++i) { vector tempVec; vec.push_back(temp); } return 0; } 어우어우 이렇게 3가지 방식이 있는데 vector vec; vector안에 vector 어우 vector vec; for (int i = 0; i < 10; ++i) { vector temp; vec.pu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/K1cd2/btsGBWClPxL/1M0Da22dA1gxFJEmnMclO0/img.png)
vector라고 해서 무조건 크기가 0으로 만들고 빈 vector를 만들어서 동적할당으로 요소를 추가하는 것은 아니에요. 애초에 크기를 정할수도 있고 어떠한 값으로 초기화 해놓고 시작할수도 있어요. 배열과 똑같이 사용할 수 있다는 말이에요. 한 번 해보죠. #include #include using namespace std; int main() { vector vec(5, 100); for (int entity : vec) cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvhPuJ/btsGBdrhES3/xC6GMHvv3xCq9PJTGcIeH1/img.png)
for in range 음.. 반복문인데 C++11에서 효율적인 반복문이라는 것이 추가가 되었어요. 쓸만함! 근데 저는 아직 습관이 덜 되어서 for (int i = 0; i < 아직 이런...것을 쓰지만 제가 C++를 많이 해보지는 않았지만 C#에서도 똑같은 for in range가 있는데 foreach라고 근데 그거 속도 느리대요. 실제 해봤는데 조금 차이가 있어요. 이유는 나중에 설명할게요. 아무튼! C++에서 사용하는 범위기반 for 루프 vecotr만 쓸 수 있는 것이 아니라 순회할 수 있는 컨테이너라면 다 사용할 수 있습니다. vector, Array, map 등 다 사용 가능합니다. for (range_declaration : range_expression) loop_statement 이거 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/F45PM/btsGz2jHvPc/fIGi9vnHRmb4Im6pJZBZuK/img.png)
vector의 함수들은 여러가지가 있어요. push_back pop_back erase find clear fill 이렇게 자주 사용하는 함수들이 있는데 물론 더 있는데 그건 직접 하면서 공부해보길! 재미없는 것부터 배우면 재미가 없어요. 어차피 배울 거 산더미인데 쉬운 것부터 배워요 쉬운 것부터 저것보다 더 많을지도 그래서 하나하나 간단명료하게 설명하겠습니다. 근데 참 보면 평일에 쓰는 글들과 주말에 쓰는 글들의 퀄리티를 보면 주말이 확실히 더 좋은 듯 싶어요. push_back() vector의 뒤에서부터 요소를 더해요. 물론 emplace_back()도 뒤에서부터 요소를 더하는 함수입니다. emplcae_back()이 더 빠른데 시간차이는 그리 엄청나지는 않으니 편한 거 사용하시면 될 듯합니다. #..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQsAJB/btsGA1dh20D/pmKPeIw1W93qemvC4YAawK/img.png)
vector는 동적으로 요소를 할당할 수 있는 동적 배열이에요 이게 무슨 말이냐면 배열같은 경우는 정적배열이에요 아래와 같은 경우가 정적배열입니다. int[5] arr; 이로써 컴파일 시점에 5라는 크기를 가진 배열이 생성되는 건데 이 이상은 추가를 못합니다. 확인해봅시다. #include using namespace std; int main() { int arr[5]; for (int i = 0 ; i < 6; ++i) arr[i] = i + 1; } 위 코드와 같이 5개의 크기를 가진 배열에 6번을 돌려서 값을 초기화 해봅시다. 보시면 Run-Time Check Failure #2 - Stack around the vraialbe 'arr' was corrupted. 라는 에러가 뜹니다. arr 주변..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q6SfC/btsGzLPDXq1/LYu3KuGavL27kbZmx9WFc1/img.png)
데이터들과의 관계, 함수, 명령 등의 집합을 의미합니다. DataStructure라고 하죠. 데이퉐스투럭쳐 아우 졸려요 이것만 쓰고 저도 자러갈까 생각중 쉽게 얘기하자면 데이터에 대해 효율적으로 접근이나 수정 즉, 데이터의 처리를 효율적으로 할 수 있게 만든 구조를 의미합니다. 뭐 단순 자료구조는 말하지 않아도 알아야 합니다. 모르면 공부해오세요. 이 카테고리에서는 이 자료구조들을 설명하려고 합니다. 선형자료구조는 Array, Linked_list, Stack, Queue, Heap이 있고 비선형에는 Tree, Graph가 있습니다. 이것을 복습해볼 예정입니다. 복습
배열의 이름 = 주소값이라는 소리를 어디선가 들어볼 수 있을 것이다. 이것을 Array to Pointer decay라고 한다. int a[N]라는 N개의 크기를 가진 변수가 있다. int *c = a; 이렇게 담을 수 있다? int[]와 int는 서로 다른 타입이다... 근데 담을 수 있다. ??? ㅇㅇ 담을 수 있어요 그래서 Array to Pointer decay라는 것이다. 포인터는 배열의 이름을 담을 수 있다...! 어떠한 Type[N]이 Type*로 담을 수 있다는 것이다. 이렇게 담을 때 int* c = a;일 때! a의 크기는 decay! 크기가 부식이 된다는 것이다! 그리고 a는 배열의 첫번째 주소가 바인딩이 된다. 이게 Array to Pointer decay라는 현상이다. 포인터의 배..