Vectors are based directly off arrays (resizing when necessary to maintain the illusion of dynamic-ity) and trades off speed for code readability and ease of use.

I once ran a benchmark of new/delete versus vector, and the vector performed comparably to arrays in terms of initialization and access, sometimes outperforming arrays altogether. This is probably due to the compiler optimizing vector code, as a second benchmark compiled with high optimization showed a slightly larger array-vector performance gap.

Also, the vector class uses optimized algorithms in itself.

Moral? Use vectors when you want them, and arays when you need them.