It depends on the context. For example if you know the maximum number of elements and want to define objects in the stack then it is better to use arrays. Otherwise it is better to use vectors.
The clear difference between the 2 is that an array is a fixed size and a vector is variable...
Arrays should be more efficient and take up less room due to them having a few less functions and members but the difference is tiny.
Most people just use arrays anyway for nearly everything unless it specifically needs to change in size.
The C++ Coding Standards ( http://amzn.to/Xc7VcR ) says:
item 76: Use vectors by default
item 77: Use vector and string instead of arrays
It's really difficult to come up with justified use of arrays, especially in modern C++ (but if you do, then use them, of course. Item 76 says just that: "If you have a good reason to use a specific container type, use that container type knowing that you did the right thing" and Item 77 adds: "An array can be acceptable when its size really is fixed at compile time".
Don't forget that vectors are a lot faster than arrays if you ever need to swap or move them around (e.g. to rearrange a container of them)
Use std::string instead of char[].
Use std::vector instead of pretty much any other kind of array.
Use std::array for when you don't need to be able to resize (careful, these have a size limit).
Use std::unique_ptr for dynamically allocated arrays.