std::vector doesn’t provide any capability or interface to take ownership of previously allocated storage. Presumably it would be too easy to pass a stack address in by accident, allowing more problems than it solved.
If you want to avoid copying into a vector, you’ll either need to use vectors through your entire call chain, or do it the C way with
float the entire time. You can’t mix them. You can guaranteed that
&vec will be equivalent to the C-array though, fully contiguous, so using vector in the whole program may be feasible.