본문 바로가기
둥지/알고리즘

가변 배열 구현

by 까닭 2023. 2. 9.

#include <iostream>

template <typename T>
class MyVector
{
    T* Array_;
    size_t Size_;
    size_t Capacity_;

public:
    MyVector()
    {
        Array_ = new T[2 * sizeof(T)];
        Capacity_ = 2 * sizeof(T);
        Size_ = 0;
    }

    ~MyVector() { }

    size_t Size() const
    {
        return Size_;
    }

    void Release()
    {
        delete Array_;
        Array_ = nullptr;
    }

    void Resize()
    {
        T* TempArray_;

        TempArray_ = new T[Capacity_ * 2 * sizeof(T)];

        for (size_t i = 0; i < Size_; ++i)
        {
            TempArray_[i] = Array_[i];
        }

        Release();
        Array_ = TempArray_;
        Capacity_ = 2 * Capacity_;
    }

    void PushBack(T _Data)
    {
        if (Capacity_ <= Size_)
        {
            Resize();
        }

        Array_[Size_] = _Data;
        ++Size_;
    }

    T& operator[](size_t _Index)
    {
        return Array_[_Index];
    }
};

int main()
{
    MyVector<int> IntArr = {};

    IntArr.PushBack(1);
    IntArr.PushBack(2);
    IntArr.PushBack(3);

    for (size_t i = 0; i < IntArr.Size(); ++i)
    {
        std::cout << IntArr[i] << std::endl;
    }
}

'둥지 > 알고리즘' 카테고리의 다른 글

[백준 1992] 쿼드 트리  (0) 2023.02.20
리스트 구현  (0) 2023.02.17
큐 구현  (0) 2023.02.10
스택 구현  (0) 2023.02.09
배열 구현  (0) 2023.02.08