Beispiel #1
0
        public static void Advance <T>(BidirectionalIterator <T> iter, int distance)
        {
            while (distance > 0)
            {
                iter.MoveNext();
                --distance;
            }

            while (distance < 0)
            {
                iter.MovePrev();
                ++distance;
            }
        }
Beispiel #2
0
        public static void Reverse <T>(BidirectionalIterator <T> begin, BidirectionalIterator <T> end)
        {
            end   = IteratorUtil.Clone(end);
            begin = IteratorUtil.Clone(begin);

            BidirectionalIterator <T> last = IteratorUtil.Clone(end);

            last.MovePrev();
            for (; !begin.Equals(last) && !begin.Equals(end); last.MovePrev(), end.MovePrev(), begin.MoveNext())
            {
                IteratorUtil.Swap(begin, last);
            }
        }