更にvectorとiteratorも

vectoriteratorもほんの一部だけ実装してみました。ただ、iteratorとかはポインタが無いと辛い気がします。

#region Using directives

using System;
using System.Collections.Generic;
using STL.Generic;
using IntVector = STL.Generic.Vector<int>;
using IntIter = STL.Generic.IForwardIterator<int>;

#endregion

class Program
{
    static void Print(IntIter first, IntIter last)
    {
        Algorithm.ForEach<int>(first, last,
            delegate(int n) { Console.Write("{0} ", n); });
        Console.WriteLine();
    }

    static void TestVector()
    {
        // サイズ10のVectorを作成
        IntVector iv = new IntVector(10);

        // 0〜9まで値を入れる
        for (int i = 0; i < iv.Size; ++i)
            iv[i] = i;

        // 0〜9が表示される
        Print(iv.Begin(), iv.End() );

        // 9番目の要素が削除される
        iv.Erase(iv.Begin().Offset(8) );
        // 8が消えている
        Print(iv.Begin(), iv.End() );
        // 2番目から5番目(9-3番目を含まない位置)までの要素が削除される
        iv.Erase(iv.Begin().Offset(1), iv.End().Offset(-3) );
        // 1〜5が消えている
        Print(iv.Begin(), iv.End() );
        // 先頭から2要素が削除される
        iv.Erase(iv.Begin(), iv.Begin().Offset(2) );
        // 0,6が消えている
        Print(iv.Begin(), iv.End() );
        // 全て削除
        iv.Clear();
        if (iv.Empty() )
            Console.WriteLine("Vector is empty.");

        // ReverseIterator

        // 0〜9まで値を入れる
        for (int i = 0; i < 10; ++i)
            iv.PushBack(i);

        // 9〜0が表示される
        Print(iv.Rbegin(), iv.Rend() );
    }

    static void Main(string[] args)
    {
        TestVector();
        Console.ReadLine();
    }
}

/* 結果
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 9
0 6 7 9
7 9
Vector is empty.
9 8 7 6 5 4 3 2 1 0
 */

今週はプログラミングが楽しかったので、英語の勉強がおろそかになってしまいました。なので、今日明日はプログラミングを封印です。さて、英語やるか・・・(^^;