Как итераторы реализованы под капотом в JAVA / C ++ / Python ... а как лучше всего поддерживать индекс?
Предположим, список = [1,2,3,4]. index = от 0 до 3.
Должно ли начальное значение индекса i быть -1 или 0? Какой должна быть последовательность действий:
1.
i = -1
next():
i++
if i == length(list):
return NONE
else: # i < length(list)
return list[i]
ИЛИ
2.
i = 0
next():
if i == length(list):
return NONE
else: # i < length(list)
val = list[i]
i++
return val
?
Аналогично для hasNext:
if i == length(list):
return False
ИЛИ
if i+1 == length(list):
return False