int size() { return m_CurCount; }
CArr arr;
int i = 0;
i = arr.size(); // 1
i = arr.capacity(); // 2
int operator[](int _Idx) { return m_pData[_Idx]; }
int main()
{
CArr arr;
int data = arr[2];
arr[2] = 40;
return 0;
}
int* operator[](int _Idx) { return m_pData + _Idx; } // 4
int main()
{
CArr arr;
int data = arr[2];
*arr[2] = 60;
return 0;
}
// 구현 되있다 가정.
Add(10, 20) = 20;
int& operator[](int _Idx) { return m_pData[_Idx]; }
int main()
{
CArr arr;
int a = arr[2];
arr[2] = 60;
return 0;
}
void CArr::push_back(int _Data)
{
if (m_MaxCount <= m_CurCount) // 1
{
// 저장 공간 추가할당
Realloc(); // 2
}
m_pData[m_CurCount++] = _Data; // 3
}
void CArr::Realloc()
{
// 1
m_MaxCount *= 2;
int* pNew = (int*)malloc(sizeof(int) * m_MaxCount);
// 2
for (int i = 0; i < m_CurCount; ++i)
{
pNew[i] = m_pData[i];
}
// 3
free(m_pData);
// 4
m_pData = pNew;
}
#include <iostream>
#include "CArr.h"
int Add(int a, int b)
{
return a + b;
}
int main()
{
CArr arr;
int i = 0;
i = arr.size();
i = arr.capacity();
arr.push_back(10);
arr.push_back(20);
arr.push_back(30);
arr.push_back(40);
int a = arr[2];
arr[2] = 60;
for (int i = 0; i < arr.size(); ++i)
{
printf("입력 데이터 : %d\n", arr.at(i));
}
for (int i = 0; i < arr.size(); ++i)
{
printf("입력 데이터 : %d\n", arr[i]);
}
return 0;
}
#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;
}
1차 23.12.22
2차 23.12.25
3차 23.12.26
4차 23.12.27
5차 23.12.28
6차 24.01.02