Note that your contactDelete function does not return a vector<contact> but a vector<contact>*.
*edit*
That method of deleting a contact is rather dangerous too as you are returning a pointer to memory which has gone out of scope. It would be better just to return void and take the vector argument as a reference and remove the contact directly from it.
Also, in loops and such, it is a better habit to get into to use iterator!=iterator instead of iterator<=iterator as not all iterators are random access.
Cheers