가변 배열 (1)은 int형을 대입하는 가변 배열(동적 배열)을 만들고 있었다.
void Realloc(DArr* _pArr)
{
_pArr->MaxCount *= 2;
int* pNew = (int*)malloc(_pArr->MaxCount * sizeof(int));
for (int i = 0; i < _pArr->CurCount; ++i)
{
pNew[i] = _pArr->pData[i];
}
free(_pArr->pData);
_pArr->pData = pNew;
}
int* pNew = (int*)malloc(_pArr->MaxCount * 2 * sizeof(int));
for (int i = 0; i < _pArr->CurCount; ++i)
{
pNew[i] = _pArr->pData[i];
}
free(_pArr->pData);
_pArr->pData = pNew;
_pArr->MaxCount *= 2;
_pArr->MaxCount *= 2;
int* pNew = (int*)malloc(_pArr->MaxCount * sizeof(int));
#include <iostream>
#include "DArr.h"
int main()
{
DArr arr1 = {};
InitDArr(&arr1);
PushData(&arr1, 10);
PushData(&arr1, 20);
PushData(&arr1, 30);
PushData(&arr1, 40);
PushData(&arr1, 50);
int data = 0;
for (int i = 0; i < arr1.CurCount; ++i) // 1
{
data = GetData(&arr1, i);
}
data = GetData(&arr1, 5); // 2
return 0;
}
#include "DArr.h"
#include <iostream>
#include <assert.h>
void InitDArr(DArr* _pArr)
{
_pArr->CurCount = 0;
_pArr->MaxCount = 4;
_pArr->pData = (int*)malloc(sizeof(int) * _pArr->MaxCount);
}
void Realloc(DArr* _pArr)
{
_pArr->MaxCount *= 2;
int* pNew = (int*)malloc(_pArr->MaxCount * sizeof(int));
for (int i = 0; i < _pArr->CurCount; ++i)
{
pNew[i] = _pArr->pData[i];
}
free(_pArr->pData);
_pArr->pData = pNew;
}
void PushData(DArr* _pArr, int _Data)
{
if (_pArr->MaxCount <= _pArr->CurCount)
{
Realloc(_pArr);
}
_pArr->pData[_pArr->CurCount++] = _Data;
}
int GetData(DArr* _pArr, int _Idx)
{
if (_pArr->CurCount <= _Idx) // 3(1)
{
assert(nullptr);
}
// assert(!(_pArr->CurCount <= _Idx)); // 3(2)
return _pArr->pData[_Idx];
}
struct DArr
{
int* pData;
int MaxCount;
int CurCount;
}
void InitDArr(DArr* _pArr);
void PushData(DArr* _pArr, int _Data);
int GetData(DArr* _pArr, int _Idx);
assert 함수 때문에 동적 배열에 입력된 데이터 숫자를 초과하는 인덱스에 접근하려는 경우 어서트가 참이되서 경고를 한다.
assert정리 : (https://blockdmask.tistory.com/286)
// 4
// c++ 수업을 할떄 만들것,
// 동적 배열, 연결형 리스트, 이진 탐색 트리
// 만들고 상속 -> 다형성 -> 추상화 -> windowsapi(소규모 게임 엔진) -> 엔진을 활용해서 게임을 만들어서 발표.(2월초 발표)
#include <vector> // 가변 배열(동적 배열)
#include <list> // 연결형 리스트
#include <map> // 이진 탐색 트리
using namespace std;
#include <iostream>
#include "DArr.h"
int main()
{
int iArr[100] = {};
DArr arr1 = {};
DArr arr2 = {};
DArr arr3 = {};
DArr arr4 = {};
InitDArr(&arr1);
PushData(&arr1, 10);
PushData(&arr1, 20);
PushData(&arr1, 30);
PushData(&arr1, 40);
PushData(&arr1, 50);
int data = 0;
for (int i = 0; i < arr1.CurCount; ++i)
{
data = GetData(&arr1, i);
}
// data = GetData(&arr1, 5);
return 0;
}
#pragma once
struct DArr
{
int* pData;
int MaxCount;
int CurCount;
};
void InitDArr(DArr* _pArr);
void PushData(DArr* _pArr, int _Data);
int GetData(DArr* _pArr, int _Idx);
#include "DArr.h"
#include <iostream>
#include <assert.h>
void InitDArr(DArr* _pArr)
{
_pArr->CurCount = 0;
_pArr->MaxCount = 4;
_pArr->pData = (int*)malloc(sizeof(int) * _pArr->MaxCount);
}
void Realloc(DArr* _pArr)
{
_pArr->MaxCount *= 2;
int* pNew = (int*)malloc(_pArr->MaxCount * sizeof(int));
for (int i = 0; i < _pArr->CurCount; ++i)
{
pNew[i] = _pArr->pData[i];
}
free(_pArr->pData);
_pArr->pData = pNew;
}
void PushData(DArr* _pArr, int _Data)
{
if (_pArr->MaxCount <= _pArr->CurCount)
{
Realloc(_pArr);
}
_pArr->pData[_pArr->CurCount++] = _Data;
}
int GetData(DArr* _pArr, int _Idx)
{
assert(!(_pArr->CurCount <= _Idx));
return _pArr->pData[_Idx];
}
1차 23.12.19
2차 23.12.20
3차 23.12.21
4차 23.12.22
5차 23.12.25
6차 24.01.01