리스트 한번 구현해보니까 제네릭이랑 인덱서는 확실히 이해 됬다
class My_List<T>
{
T[] my_arr = new T[0];
public void Add(T elemets)
{
T[] new_arr = new T[my_arr.Length+1];
for (int i = 0; i < my_arr.Length; i++)
{
new_arr[i] = my_arr[i];
}
new_arr[my_arr.Length] = elemets;
my_arr = new_arr;
}
public int Count()
{
return my_arr.Length;
}
public void RemoveAt(int index)
{
if(index<0 || index >= my_arr.Length)
{
throw new Exception("인덱스 범위 넘어감");
return;
}
T[] new_arr = new T[my_arr.Length - 1];
int check = 0;
for (int i = 0; i < my_arr.Length-1; i++)
{
if (i == index)
{
check = 1;
}
new_arr[i] = my_arr[i+check];
}
my_arr = new_arr;
}
public T this[int index]
{
get
{
if (index < 0 || index >= my_arr.Length)
{
throw new Exception("인덱스 범위 넘어감");
}
else
{
return my_arr[index];
}
}
set
{
if (index < 0 || index >= my_arr.Length)
{
throw new Exception("인덱스 범위 넘어감");
}
else
{
my_arr[index] = value;
}
}
}
}
공부용으로는 잘 만드셨네요
요소를 삽입/삭제할때마다 새 배열을 만들고 있는데 이 횟수를 줄여보는 방식을 고안해보시면 더 공부가 될 것 같아요
칭찬 감사합니다! 딕셔너리랑 다른 자료구조도 만들어볼건데 한번 그런식으로 해볼께요
해당 댓글은 삭제되었습니다.
배열의 길이가 2배씩 지수적으로 늘어나는 구조라면, Add()함수를 호출 시키는 빈도가 잦고 배열의 길이가 길어질수록 배열을 늘리게 되는 상황의 빈도는 역으로 줄어드는 아름다운 구조가 되겠네요..깨달음을 얻었습니다