mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 20:15:17 +00:00
AK: Add Vector::resize_and_keep_capacity()
This function is just like resize() except it does not deallocate the vector buffer when shrinking.
This commit is contained in:
parent
e7abbc6655
commit
baadde122b
Notes:
sideshowbarker
2024-07-19 07:00:46 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/baadde122b9
1 changed files with 12 additions and 4 deletions
16
AK/Vector.h
16
AK/Vector.h
|
@ -539,14 +539,17 @@ public:
|
|||
m_capacity = new_capacity;
|
||||
}
|
||||
|
||||
void shrink(size_t new_size)
|
||||
void shrink(size_t new_size, bool keep_capacity = false)
|
||||
{
|
||||
ASSERT(new_size <= size());
|
||||
if (new_size == size())
|
||||
return;
|
||||
|
||||
if (!new_size) {
|
||||
clear();
|
||||
if (keep_capacity)
|
||||
clear_with_capacity();
|
||||
else
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -555,10 +558,10 @@ public:
|
|||
m_size = new_size;
|
||||
}
|
||||
|
||||
void resize(size_t new_size)
|
||||
void resize(size_t new_size, bool keep_capacity = false)
|
||||
{
|
||||
if (new_size <= size())
|
||||
return shrink(new_size);
|
||||
return shrink(new_size, keep_capacity);
|
||||
|
||||
ensure_capacity(new_size);
|
||||
for (size_t i = size(); i < new_size; ++i)
|
||||
|
@ -566,6 +569,11 @@ public:
|
|||
m_size = new_size;
|
||||
}
|
||||
|
||||
void resize_and_keep_capacity(size_t new_size)
|
||||
{
|
||||
return resize(new_size, true);
|
||||
}
|
||||
|
||||
using Iterator = VectorIterator<Vector, T>;
|
||||
Iterator begin() { return Iterator(*this, 0); }
|
||||
Iterator end() { return Iterator(*this, size()); }
|
||||
|
|
Loading…
Add table
Reference in a new issue