From d77ce7bae9eebf2935a64b96308b8c239ad39213 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 26 Nov 2022 20:32:33 +0100 Subject: [PATCH] AK: Add Vector::shrink_to_fit() If there's more capacity than size, the vector is reallocated to have capacity == size. --- AK/Vector.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/AK/Vector.h b/AK/Vector.h index 4031f6ec5b..e0fce22193 100644 --- a/AK/Vector.h +++ b/AK/Vector.h @@ -729,6 +729,18 @@ public: MUST(try_resize_and_keep_capacity(new_size)); } + void shrink_to_fit() + { + if (size() == capacity()) + return; + Vector new_vector; + new_vector.ensure_capacity(size()); + for (auto& element : *this) { + new_vector.unchecked_append(move(element)); + } + *this = move(new_vector); + } + using ConstIterator = SimpleIterator; using Iterator = SimpleIterator; using ReverseIterator = SimpleReverseIterator;