In some debug environments using vector[i] does bounds checking even though the standard specifies that it should not. Using *(vector.begin()) sidesteps this though, giving the same result without the bounds checking.