vector implementation
unknown
python
2 months ago
1.6 kB
10
Indexable
from typing import Generic, TypeVar
T = TypeVar("T")
class ArrayList(Generic[T]):
def __init__(self, capacity: int = 5):
self.capacity = capacity
self._arr: list[T | None] = [None] * self.capacity
self.length = 0
def _bounds_check(self, index: int):
if not (0 <= index < self.length):
raise ValueError("Index out of bounds")
def _realloc_check(self):
if self.length >= self.capacity:
self.temp = self._arr
self.capacity *= 2
self._arr = [None] * self.capacity
for i, element in enumerate(self.temp):
self._arr[i] = element
def append(self, value: T):
self._realloc_check()
self._arr[self.length] = value
self.length += 1
def pop(self):
self.length -= 1
def __setitem__(self, index: int, value: T):
self._bounds_check(index)
self._arr[index] = value
def __getitem__(self, index: int) -> T | None:
self._bounds_check(index)
return self._arr[index]
def __len__(self) -> int:
return self.length
def __iter__(self):
for item in self._arr[: self.length]:
yield item
def main():
a = ArrayList[int](4)
a.append(3)
a.append(4)
a.append(9)
print(len(a._arr))
a.append(3)
print(len(a._arr))
a.append(7)
print(len(a._arr))
a.append(1)
print(len(a._arr))
for item in a:
print(item, end=" ")
print()
print(a[5])
a[3] = 111
print(a[3])
if __name__ == "__main__":
main()
Editor is loading...
Leave a Comment