Ive had great difficulties with the vector over time too.
To the best of my knowledge, which is far from perfect
Use version A when it is a local variable.
Use version B when it is a local or global POINTER, and is just going to point at other vectors. (uncommon)
Use version A when it is a global variable, but you dont care about its initial value. (dirty!)
Use version C when it is a global variable, and you want to set its initial value.
Version C is VECTOR* temp = { x=0; y=0; z=0; }