You could avoid casting so much by storing data in void** instead of a character array. void** data can be accessed by Vector->Data[ ] and then cast to any type by the user.
I've actually improved the design of the vector a lot since I made this video. Now the user doesn't have to do any casting at all! You can check it out in the github repo, I might make a followup video someday...