How to cheaply assign C-style array to std::vector? How to cheaply assign C-style array to std::vector? arrays arrays

How to cheaply assign C-style array to std::vector?


The current 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[0] will be equivalent to the C-array though, fully contiguous, so using vector in the whole program may be feasible.


Currently, the std::vector interface does not possess the capacity to move from or swap with anything except another std::vector.


The only way to do it would be to create a custom allocator.

  1. Write an allocator class that you can initialise with your array.

  2. Instantiate the vector with the allocator as an argument.