// Vectorテンプレート class Vector(T) { private: T[] items; int count; public: this() { clear(); } T opIndex(int index) { return get(index); } void set(int index, T t) { assert(0 <= index && index < count); items[index] = t; } T[] opCast() { return items[0..count]; } T get(int index) { assert(0 <= count && count < items.length); return items[index]; } int size() { return count; } int capacity() { if (!items) { return 0; } return items.length; } void add(T t) { if (capacity() == size()) { int s = size() * 2; if (s == 0) { s++; } T[] newitems = new T[s]; for (int i = 0; i < size(); i++) { newitems[i] = items[i]; } items = newitems; } items[count] = t; count++; } bool empty() { return !items; } void clear() { count = 0; items = new T[16]; } }