int* pNew = (int*)malloc(_pArr->MaxCount * sizeof(int));
itn size = sizeof(CArr);
CArr* pArr = (CArr*)malloc(16);
free(pArr);
int main()
{
CArr* pArr1 = new CArr;
delete pArr1;
}
template<typename T>
void MyNew()
{
int size = sizeof(T);
T* pNew = (T*)malloc(size);
pNew->T::T();
}
int main()
{
MyNew<CArr>();
}
CArr* pArr2 = new CArr[10]; // 1
delete pArr2; // 2
delete[] pArr2; // 3
m_pData = (int*)malloc(sizeof(int) * m_MaxCount);
m_pData = new int[m_MaxCount];
free(m_pData);
delete[] m_pData;
#pragma once
class CArr
{
private:
int* m_pData;
int m_MaxCount;
int m_CurCount;
public:
void push_back(int _Data);
private:
void Realloc();
public:
int size() { return m_CurCount; }
int capacity() { return m_MaxCount; }
int at(int _Idx) { return m_pData[_Idx]; }
int& operator[](int _Idx) { return m_pData[_Idx]; }
public:
CArr();
~CArr();
};
#include "CArr.h"
#include <iostream>
CArr::CArr()
: m_pData(nullptr)
, m_CurCount(0)
, m_MaxCount(2)
{
m_pData = (int*)malloc(sizeof(int) * m_MaxCount);
}
CArr::~CArr()
{
free(m_pData);
}
void CArr::push_back(int _Data)
{
if (m_MaxCount <= m_CurCount)
{
Realloc();
}
m_pData[m_CurCount++] = _Data;
}
void CArr::Realloc()
{
m_MaxCount *= 2;
int* pNew = (int*)malloc(sizeof(int) * m_MaxCount);
for (int i = 0; i < m_CurCount; ++i)
{
pNew[i] = m_pData[i];
}
free(m_pData);
m_pData = pNew;
}
#pragma once
// 클래스 템플릿
template<typename T>
class CArr
{
private:
T* m_pData;
int m_MaxCount;
int m_CurCount;
public:
//
void push_back(const T& _Data); // 1
private:
void Realloc();
public:
int size() { return m_CurCount; }
int capacity() { return m_MaxCount; }
T at(int _Idx) { return m_pData[_Idx]; }
T& operator[](int _Idx) { return m_pData[_Idx]; }
public:
CArr();
~CArr();
};
template<typename T>
CArr<T>::CArr()
: m_pData(nullptr)
, m_CurCount(0)
, m_MaxCount(2)
{
m_pData = new T[m_MaxCount];
}
template<typename T>
CArr<T>::~CArr()
{
delete[] m_pData;
}
template<typename T>
void CArr<T>::push_back(const T& _Data) // 1
{
if (m_MaxCount <= m_CurCount)
{
Realloc();
}
m_pData[m_CurCount++] = _Data;
}
template<typename T>
void CArr<T>::Realloc()
{
m_MaxCount *= 2;
T* pNew = new T[m_MaxCount];
for (int i = 0; i < m_CurCount; ++i)
{
pNew[i] = m_pData[i];
}
delete[] m_pData;
m_pData = pNew;
}
#include <iostream>
#include <vector>
#include "CArr.h"
class CTest
{
public:
CTest()
{}
~CTest()
{}
};
int main()
{
int size = sizeof(CTest);
CTest* pArr = (CTest*)malloc(16);
free(pArr);
CTest* pArr1 = new CTest;
delete pArr1;
CTest* pArr2 = new CTest[10];
delete[] pArr2;
CArr<int> arr;
arr.push_back(10);
arr.push_back(20);
arr.push_back(30);
int value = 0;
value = arr.at(0);
value = arr.at(1);
value = arr.at(2);
CArr<float> arr_float;
arr_float.push_back(1.1f);
arr_float.push_back(2.2f);
arr_float.push_back(3.3f);
float fvalue = 0;
fvalue = arr_float.at(0);
fvalue = arr_float.at(1);
fvalue = arr_float.at(2);
std::vector<float> vecFloat;
vecFloat.push_back(1.1f);
fvalue = vecFloat.at(0);
fvalue = vecFloat[0];
vecFloat.size();
vecFloat.capacity();
vecFloat.reserve(10);
vecFloat.resize(10);
return 0;
}
#pragma once
// 클래스 템플릿
template<typename T>
class CArr
{
private:
T* m_pData;
int m_MaxCount;
int m_CurCount;
public:
//
void push_back(const T& _Data); // 1
private:
void Realloc();
public:
int size() { return m_CurCount; }
int capacity() { return m_MaxCount; }
T at(int _Idx) { return m_pData[_Idx]; }
T& operator[](int _Idx) { return m_pData[_Idx]; }
public:
CArr();
~CArr();
};
template<typename T>
CArr<T>::CArr()
: m_pData(nullptr)
, m_CurCount(0)
, m_MaxCount(2)
{
m_pData = new T[m_MaxCount];
}
template<typename T>
CArr<T>::~CArr()
{
delete[] m_pData;
}
template<typename T>
void CArr<T>::push_back(const T& _Data) // 1
{
if (m_MaxCount <= m_CurCount)
{
Realloc();
}
m_pData[m_CurCount++] = _Data;
}
template<typename T>
void CArr<T>::Realloc()
{
m_MaxCount *= 2;
T* pNew = new T[m_MaxCount];
for (int i = 0; i < m_CurCount; ++i)
{
pNew[i] = m_pData[i];
}
delete[] m_pData;
m_pData = pNew;
}
1차 23.12.26
2차 23.12.27
3차 23.12.28
4차 23.12.29
5차 24.01.02
6차 24.01.03