@Override
	public Iterator<T> iterator() {
		return new Iterator<T>(){
			private int pos = 0;

			public boolean hasNext() {
				return pos < size;
			}

			@SuppressWarnings("unchecked")
			public T next() {
				if(hasNext())
					return (T)array[pos++];
				else
					throw new NoSuchElementException("Pas de suivant");
			}
			
			public void remove(){
				if(pos == 0)
					throw new IllegalStateException("next() n'a pas été appelé!");
				else if(size-1 == 0){
					array = new Object[1];
					array[0] = null;
					size--;
				}
				else{
					System.arraycopy(array, pos, array, pos-1, size-1-pos-1);
					array[--size] = null;
				}
			}
		};
	}