class MyClass
{
private:
int m_i;
public:
class Inner // 1
{
private:
float m_f;
};
};
int main()
{
int size = 0;
MyClass c;
size = sizeof(MyClass); // 2
MyClass::Inner in;
size = sizeof(MyClass::Inner); // 3
return 0;
}
int main()
{
CArr<float>::iterator iter;
// 2.4
CArr<float> arrFloat;
arrFloat.push_back(1.f);
arrFloat.push_back(2.f);
CArr<float>::iterator iter;
iter = arrFloat.begin();
return 0;
}
class iterator
{
private:
CArr<T>* m_pOwner; // 1
int m_Idx; // 1
public:
iterator()
: m_pOwner(nullptr)
, m_Idx(-1) // 2
{
}
iterator(CArr<T>* _Owner, int _idx) // 3
: m_pOwner(_Owner)
, m_Idx(_idx)
{}
~iterator()
{
}
};
};
public:
void push_back(const T& _Data);
class iterator; // 3
iterator begin() // 4
{
//iterator iter; // 5
//iter.m_pOwner = this; // 5
//iter.m_Idx = 0; // 5
iterator iter(this, 0); // 6
return iter;
}
#include <iostream>
#include "CArr.h"
#include <vector>
using std::vector;
class MyClass
{
private:
int m_i;
public:
class Inner
{
private:
float m_f;
};
};
int main()
{
int size = 0;
MyClass c;
size = sizeof(MyClass);
MyClass::Inner in;
size = sizeof(MyClass::Inner);
CArr<float> arrFloat;
arrFloat.push_back(1.f);
arrFloat.push_back(2.f);
CArr<float>::iterator iter;
iter = arrFloat.begin();
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);
class iterator;
iterator begin()
{
iterator iter(this, 0);
return iter;
}
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();
class iterator
{
private:
CArr<T>* m_pOwner;
int m_Idx;
public:
iterator()
: m_pOwner(nullptr)
, m_Idx(-1)
{
}
iterator(CArr<T>* _Owner, int _idx)
: m_pOwner(_Owner)
, m_Idx(_idx)
{}
~iterator()
{
}
};
};
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)
{
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.27
2차 23.12.28
3차 23.12.29
4차 24.01.02
5차 24.01.03