55enabling both C++ STL-style iteration and Python iteration protocols.
66"""
77
8- from typing import TypeVar , Generic , List , Any
8+ from typing import TypeVar , Generic , List
99from abc import ABC , abstractmethod
1010
1111T = TypeVar ('T' )
1414class Iterator (ABC , Generic [T ]):
1515 """
1616 Abstract base class for iterators.
17-
17+
1818 Provides the foundation for both forward and reverse iterators.
1919 """
20-
20+
2121 @abstractmethod
2222 def __next__ (self ) -> T :
2323 """Get the next element."""
2424 pass
25-
25+
2626 @abstractmethod
2727 def __iter__ (self ):
2828 """Return the iterator itself."""
@@ -32,28 +32,28 @@ def __iter__(self):
3232class VectorIterator (Iterator [T ]):
3333 """
3434 Forward iterator for vector.
35-
35+
3636 This iterator traverses the vector from beginning to end.
3737 """
38-
38+
3939 def __init__ (self , data : List [T ], index : int = 0 ) -> None :
4040 """
4141 Initialize vector iterator.
42-
42+
4343 Args:
4444 data: Reference to the vector's internal data
4545 index: Starting position
4646 """
4747 self ._data = data
4848 self ._index = index
49-
49+
5050 def __next__ (self ) -> T :
5151 """
5252 Get the next element.
53-
53+
5454 Returns:
5555 The next element in the vector.
56-
56+
5757 Raises:
5858 StopIteration: When iteration is complete.
5959 """
@@ -62,7 +62,7 @@ def __next__(self) -> T:
6262 value = self ._data [self ._index ]
6363 self ._index += 1
6464 return value
65-
65+
6666 def __iter__ (self ):
6767 """Return the iterator itself."""
6868 return self
@@ -71,14 +71,14 @@ def __iter__(self):
7171class VectorReverseIterator (Iterator [T ]):
7272 """
7373 Reverse iterator for vector.
74-
74+
7575 This iterator traverses the vector from end to beginning.
7676 """
77-
77+
7878 def __init__ (self , data : List [T ], index : int = - 1 ) -> None :
7979 """
8080 Initialize reverse vector iterator.
81-
81+
8282 Args:
8383 data: Reference to the vector's internal data
8484 index: Starting position (default: last element)
@@ -88,14 +88,14 @@ def __init__(self, data: List[T], index: int = -1) -> None:
8888 self ._index = len (data ) - 1
8989 else :
9090 self ._index = index
91-
91+
9292 def __next__ (self ) -> T :
9393 """
9494 Get the next element (in reverse order).
95-
95+
9696 Returns:
9797 The next element in reverse order.
98-
98+
9999 Raises:
100100 StopIteration: When iteration is complete.
101101 """
@@ -104,7 +104,7 @@ def __next__(self) -> T:
104104 value = self ._data [self ._index ]
105105 self ._index -= 1
106106 return value
107-
107+
108108 def __iter__ (self ):
109109 """Return the iterator itself."""
110110 return self
@@ -113,32 +113,32 @@ def __iter__(self):
113113class SetIterator (Iterator [T ]):
114114 """
115115 Iterator for set.
116-
116+
117117 This iterator traverses the set elements.
118118 Note: Order is not guaranteed (matches Python set behavior).
119119 """
120-
120+
121121 def __init__ (self , data : set ) -> None :
122122 """
123123 Initialize set iterator.
124-
124+
125125 Args:
126126 data: Reference to the set's internal data
127127 """
128128 self ._iterator = iter (data )
129-
129+
130130 def __next__ (self ) -> T :
131131 """
132132 Get the next element.
133-
133+
134134 Returns:
135135 The next element in the set.
136-
136+
137137 Raises:
138138 StopIteration: When iteration is complete.
139139 """
140140 return next (self ._iterator )
141-
141+
142142 def __iter__ (self ):
143143 """Return the iterator itself."""
144144 return self
@@ -147,32 +147,32 @@ def __iter__(self):
147147class MapIterator (Iterator ):
148148 """
149149 Iterator for map.
150-
150+
151151 This iterator traverses the map's key-value pairs.
152152 Returns tuples of (key, value).
153153 """
154-
154+
155155 def __init__ (self , data : dict ) -> None :
156156 """
157157 Initialize map iterator.
158-
158+
159159 Args:
160160 data: Reference to the map's internal data
161161 """
162162 self ._iterator = iter (data .items ())
163-
163+
164164 def __next__ (self ):
165165 """
166166 Get the next key-value pair.
167-
167+
168168 Returns:
169169 Tuple of (key, value).
170-
170+
171171 Raises:
172172 StopIteration: When iteration is complete.
173173 """
174174 return next (self ._iterator )
175-
175+
176176 def __iter__ (self ):
177177 """Return the iterator itself."""
178178 return self
0 commit comments