diff options
Diffstat (limited to 'src/prevector.h')
-rw-r--r-- | src/prevector.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/prevector.h b/src/prevector.h index ea8707389a..9d576321b6 100644 --- a/src/prevector.h +++ b/src/prevector.h @@ -378,6 +378,21 @@ public: fill(ptr, first, last); } + inline void resize_uninitialized(size_type new_size) { + // resize_uninitialized changes the size of the prevector but does not initialize it. + // If size < new_size, the added elements must be initialized explicitly. + if (capacity() < new_size) { + change_capacity(new_size); + _size += new_size - size(); + return; + } + if (new_size < size()) { + erase(item_ptr(new_size), end()); + } else { + _size += new_size - size(); + } + } + iterator erase(iterator pos) { return erase(pos, pos + 1); } |