MyArray

STLÀÇ µ¿Àû ¹è¿­ÀΠvector¿Í ºñ½ÁÇÑ ¿ªÇÒÀ» ÇÏ´Â MyArray Ŭ·¡½ºÀÌ´Ù.
Ŭ·¡½ºÀÇ °ø°³ ¸Þ½îµå¿Í ŸÀÔÀ» Á¤¸®ÇÏ¿´´Ù.

¸Þ½îµå À̸§Àº STLÀÇ vector¿Í À̸§À» ºñ½ÁÇÏ°Ô ÇÏ¿´´Ù.
STLÀÇ vector¿Í ´Ù¸¥ ºÎºÐ¸¸ ¼³¸í ÇÏ°Ú´Ù.

vector::clear()¸¦ ½ÇÇàÇÏ¸é µ¥ÀÌÅÍ´Â Áö¿öÁöÁö¸¸ Capacity ¿ë·®Àº º¯ÇÏÁö ¾Ê´Â´Ù.
MyArray::Clear()µµ ¶È°°´Ù.
MyArray::Release() ¸Þ½îµå´Â Capacity ¿ë·®µµ ÃʱâÈ­ ½ÃÅ°¸ç, ¸Þ¸ð¸® °ø°£µµ »èÁ¦ÇÑ´Ù.

    typedef        dataType&            reference;

    typedef        const dataType&    const_reference;

    typedef        dataType*            iterator;

    typedef        const dataType*    const_iterator;

    typedef        dataType*           pointer;

 

 

 

    //»ý¼ºÀÚ¿¡¼­´Â m_iSize¿Í m_iCapacityÅ©±â°¡ °°´Ù.

    MyArray(int iSize = 0);

    ~MyArray()

    //Capacity´Â ¹°·Ð ¸ðµç µ¥ÀÌŸ°¡ Á¦°Å µÈ´Ù.

    void Release();

    //Capacity´Â STLó·³ º¯ÇÏÁö ¾Ê´Â´Ù.

    void Clear();

 

    //Capacity ¼³Á¤ °ü·Ã ¸Þ½îµå

    int  Reserve(int iSize);

    void Resize(int iSize);

 

    //µ¥ÀÌÅÍ Ãß°¡ »èÁ¦

    void PushBack(dataType item);

    void PopBack();

    void PopBack(pointer item)

    bool Insert(int iIndex , dataType item)

    bool Erase(int iIndex)

 

    //Å©±â °ü·Ã ¸Þ½îµå

    bool Empty() const

    int  MaxSize()

    int  Capacity()

    int  Size()

 

    //Á¢±Ù °ü·Ã ¸Þ½îµå

    reference At(int iIndex)

    reference operator[](int iIndex)

    operator pointer()

 

    // STL-style interface

    iterator    begin(void)        { return &m_pArray[0]; }

    iterator    end(void)        { return &m_pArray[0] + m_iSize; }

 

//main.cpp

#include "MyArray.h"

#include <stdio.h>

 

void main()

{

    MyArray<int> data;

 

    data.Reserve(10);

    for(int i = 0; i < 8; ++i)

    {

        data.PushBack(i*10);

        int capacity = data.Capacity();

        int size = data.Size();

        int pacity = data.Capacity();

    }

 

    int iData = data.At(2);

    data.Insert(5, 500);

    data.Insert(6, 600);

 

    data.Erase(5);

    data.PopBack(&iData);

    int ca = data.Capacity();

    int si = data.Size();

 

    MyArray<int>::iterator iter = data.begin();

    for(; iter != data.end(); iter++)

    {

        printf("%d\n",  *iter);

    }

}