iterator
iterator copied to clipboard
Iterator Library for C# and Unity
About
- A no-GC version of C#'s
IEnumerator<T>
and LINQ - Inspired by C++'s
<iterator>
and<algorithm>
headers - Useful for any C# project with additional support for Unity
Getting Started
Unity Projects
Clone or download this repository and copy the JacksonDunstanIterator
directory somewhere inside your Unity project's Assets
directory.
Non-Unity Projects
Clone or download this repository and add all the .cs
files directly under the JacksonDunstanIterator
directory to your C# project.
Usage
There are three iterator types:
-
ArrayIterator<T>
for managed arrays (T[]
) -
ListIterator<T>
forList<T>
-
NativeArrayIterator<T>
forNativeArray<T>
(automatically compiled out when Unity 2018.1+ isn't available)
They all have the same API. Here's the basics of using ArrayIterator<T>
:
// Get an array
int[] array = new [] { 30, 10, 20, 40 };
// Get an iterator to the beginning of the array
ArrayIterator<int> begin = array.Begin();
// Get the value of the iterator
int val = begin.GetCurrent();
// Move to the next element
ArrayIterator<int> second = begin.GetNext();
// Get an iterator to one past the end of the array
ArrayIterator<int> end = array.End();
// Reverse [ 10, 20, 40] so the array is [ 30, 40, 20, 10 ]
second.Reverse(end);
// Search for an element satisfying a condition
ArrayIterator<int> it20 = begin.FindIf(end, e => e < 25);
There is much more functionality available. See the source for more.
To read about the making of this library, see the Enumerables Without the Garbage series:
License
MIT