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

배열 구현

by 까닭 2023. 2. 8.
#include <iostream>

constexpr int INVALID_INDEX = -1;
constexpr int MAX_COUNT = 101;

template<typename T>
class MyArray
{
    T Array_[MAX_COUNT];
    size_t Size_;

public:
    void Insert(size_t _Index, T _Data)
    {
        if (0 == _Index)
        {
            Array_[_Index] = _Data;
            ++Size_;

            return;
        }

        for (size_t i = Size_; i > _Index; --i)
        {
            Array_[i] = Array_[i - 1];
        }

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

    void OrderlyRemove(size_t _Index)
    {
        for (size_t i = _Index; i < Array_[i + 1]; ++i)
        {
            Array_[i] = Array_[i + 1];
            Array_[i + 1] = NULL;
        }

        --Size_;
    }

    void UnorderlyRemove(size_t _Index)
    {
        Array_[_Index] = NULL;
        --Size_;
    }

    size_t Search(T _Data)
    {
        for (size_t i = 0; i < Size_; ++i)
        {
            if (Array_[i] == _Data)
            {
                return i;
            }
        }

        return INVALID_INDEX;
    }

    void Print()
    {
        for (size_t i = 0; i < Size_; ++i)
        {
            std::cout << Array_[i] << std::endl;
        }
    }
};


int main()
{
    MyArray<int> Arr = {};

    Arr.Insert(0, 1);
    Arr.Insert(1, 2);
    Arr.Insert(2, 3);
    Arr.Insert(3, 4);

    Arr.UnorderlyRemove(2);

    Arr.Print();
}

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

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