public static IEnumerable <T> CreateEnumerator <T>(InputIterator <T> begin, InputIterator <T> end) { begin = IteratorUtil.Clone(begin); while (!begin.Equals(end)) { yield return(begin.Read()); begin.MoveNext(); } }
public static int Distance <T>(InputIterator <T> first, InputIterator <T> last) { first = IteratorUtil.Clone(first); int result = 0; while (!first.Equals(last)) { first.MoveNext(); ++result; } return(result); }
public static bool IsOneElementRange <T>(InputIterator <T> first, InputIterator <T> last) { first = IteratorUtil.Clone(first); first.MoveNext(); return(first.Equals(last)); }
public static ListIterator <T> AdvanceCopy <T>(ListIterator <T> iter, int distance) { iter = IteratorUtil.Clone(iter); Advance(iter, distance); return(iter); }
public static RandomAccessIterator <T> AdvanceCopy <T>(RandomAccessIterator <T> iter, int distance) { iter = IteratorUtil.Clone(iter); Advance(iter, distance); return(iter); }
public static BidirectionalIterator <T> AdvanceCopy <T>(BidirectionalIterator <T> iter, int distance) { iter = IteratorUtil.Clone(iter); Advance(iter, distance); return(iter); }