c++24 템플릿 템플릿 파라마터, 템플릿 메서드, 템플릿 초기화, friend template.. 템플릿 템플릿 파라마터 만약 template clss Grid ...가 존재한다면 Grid myIntGrid라고 int가 중복이된다. 해결책 -> 템플릿 템플릿 파라미터를 이용하면된다. 템플릿 템플릿 파라미터.. STL 템플릿 컨테이너 정의를 보면 template class vector.. 로 되어있다. 위의 템플릿정의를 두번째 템플릿 인자로 넣는 것이 템플릿 템플릿이다.. template class Grid { .... 위의 포현대로 하면 중복이 사라진다. Grid myGrid; ... 중복 있는 것이 더 좋은 것같기도하고.... 템플릿 메서드 #include #include #include // c++ 11 using namespace std; //decltype -> 후위 반환타입... //temp.. 2022. 5. 13. vector 구현. 먼저 stl이 먼가? -> standard template library이다 여기서 template는 c++의 template이다. 그럼 container는 먼가 데이터를 저장하는 객체라고 생각하자. 모든 컨테이너는 iterator를 이용해서 접근이 가능하다. (컨테이너에 상관없이 이터레이터를 사용하면 일관된 방법으로 접근이 가능하다) 간단 구현소스 #include #include using namespace std; //동적배열의 핵심은 이사 횟수를 최소화하는 것이다. //capacity는 총 집의 크기, size는 내가 사용하는 방의크기 template class Iterator { public: Iterator() : \_ptr(nullptr) { ``` } Iterator& operator++().. 2022. 4. 17. 오버로딩 된 new, new new연산자는 동적 메모리할당이고 예를들어서 Knight* k1 = new Knight으로 new 다음 타입을 넣어주면 해당하는 타입의 크기를 반환해준다고 알고 있었다.. 우리가 흔히 사용하는 new도 오버로딩으로 되어있는데 해당 부분을 찾아 보면 _NODISCARD _Ret_notnull_ _Post_writable_byte_size_(_Size) _VCRT_ALLOCATOR void* __CRTDECL operator new( size_t _Size ); size_t를 받는 다는 것을 알 수 있다. 궁금해 여기서 이해가 안갔던 부분은 사이즈를 받는데 어떻게 객체 타입을 넣어줘도되는 건지가 궁금했다. msdn을 살펴보니 "C++ 클래스 개체에 대한 메모리를 할당하는 데 사용되는 경우 new 메모.. 2022. 4. 9. c++ 11 가변인자템플릿 varidic template 사용예제 template Type* xnew(Args&&... args) { //메모리 영역할당하기 Type* memory = static_cast(BaseAllocator::Alloc(sizeof(Type))); //메모리 영역할당 후 생성자랑 소멸자도..만들기..호출.. //placement new (메모리 위에 생성자를 호출해줘!) //가변인자를 전달하는 것 new(memory)Type(forward(args)...); return memory; } 여기서 template의 인자가 여러개 일 수도있고 타입도 다양할 수 있다 이것을 다양하게 받아주기 위해서 ...문법을 사용했고, 해당 인자를 받을때는 forward로 받아주면된다. 2022. 4. 7. 이전 1 2 3 4 5 6 다음