#include #include #include #include int main() { std::vector vec[3]; for (int i = 0; i begin(); std::vector::iterator iterEnd = vec->end(); while (iter != iterEnd) { printf("%d\n", *iter); ++iter; } printf("%d\n", (int)vec->size()); return 0; } - 이차원 배열 형태로 사용할 시, 각 열마다 begin()과 end()가 존재
//Class CRef //Ref.h /* [스마트 포인터] * 파이썬 또는 자바의 경우 가비지 컬렉터라는 프로그램이 계속 작동함. - 댕글링 포인터들을 자동으로 청소 but 속도가 느림. * 스마트 포인터 - 공유 포인터 - 원래 기본 기능으로 지원하지만 게임엔진 등에서는 직접 만들어서 쓰는 편이다. * 어떤 주소를 3개의 포인터가 참조하다가 한 포인터에서 delete를 했을 시 나머지 2개 포인터는 댕글링 포인터가 되어 버린다. 매우 위험한 상황. * 그래서 레퍼런스 카운터라는 방법을 사용한다. - 모든 주소는 RC라는 값을 가지고 있고, - delete를 할때 RC값이 0이 아니면 할당을 해제하는 것이 아니라 RC값을 하나 줄인다. - 위의 상황에서 한 포인터에서 delete를 할 경우에 주소가 할..
//CircleQueueDynamic.h /* 지난 번에 구현한 서클 큐와 자동 확장 배열 클래스를 응용하여, 용량이 꽉 차면 자동으로 용량을 두 배만큼 늘려 주는 서클 큐를 구현 */ #pragma once #include template class CCircleQueueDynamic { public: CCircleQueueDynamic() { m_Size = 0; m_Capacity = 4; m_Head = 0; m_Tail = 0; m_Array = new T[m_Capacity + 1]; } ~CCircleQueueDynamic() { delete[] m_Array; } private: int m_Size; int m_Capacity; int m_Head; int m_Tail; T* m_Array..
* "고블린, 10, 10, 10, 10"이라는 문자열을 문자열 Name, 정수 Str, 정수 Dex, 정수 Int, 정수 Luk 다섯 개의 변수에 나눠서 저장해 보자 * 파일 입출력에 요긴하게 쓸 수 있을 것 같다. #include //sscanf 함수 에러 해제 #pragma warning(disable:4996) #define BUFFER_SIZE 128 int main() { //소스 문자열 생성 char* stringarr = new char[BUFFER_SIZE]; memset(stringarr, 0, BUFFER_SIZE); strcpy_s(stringarr, BUFFER_SIZE, "고블린, 10, 10, 10, 10"); //복사받을 문자열과 변수 생성 char* name = new ch..