[VariableBlockVector] Use std::vector for memory management
The manual memory management used before looks a bit scary and also leads to lots of repeated code. In this MR, both the actual vector entries and the vector windows are now held in std::vector
s.
When @joe did something similar for the normal BlockVector
, he used scope guards in some cases to call syncBaseArray()
. I failed, however, to fully understand when/why they would be necessary.
By coincident, this MR also patches a bug in the VariableBlockVector
. When copying from another vector, the copied-to vector would always have the state initialized = true
, independent of the actual state of the copied-from vector. For an uninitialized source, this would give you a vector that is flagged initialized but is actually not.