From abb7899a9d1d297048dd5d5cecb6d810944d8c76 Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Tue, 15 Apr 2025 16:48:23 +0000 Subject: [PATCH] fix(kernel/std): improve capacity growth strategy in std::vector operations --- Kernel/include_std/vector | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Kernel/include_std/vector b/Kernel/include_std/vector index fb61fb0d..b9269288 100644 --- a/Kernel/include_std/vector +++ b/Kernel/include_std/vector @@ -784,7 +784,7 @@ namespace std { size_type index = pos - begin(); if (_size == _capacity) - reserve(_capacity * 2); + reserve(_capacity + (_capacity / 2) + 1); for (size_type i = _size; i > index; i--) _data[i] = _data[i - 1]; @@ -850,7 +850,7 @@ namespace std { size_type index = pos - begin(); if (_size == _capacity) - reserve(_capacity * 2); + reserve(_capacity + (_capacity / 2) + 1); for (size_type i = _size; i > index; i--) _data[i] = _data[i - 1]; @@ -891,7 +891,7 @@ namespace std reserve(sizeof(T) * 2); if (_size == _capacity) - reserve(_capacity * 2); + reserve(_capacity + (_capacity / 2) + 1); _data[_size] = value; _size++; @@ -903,7 +903,7 @@ namespace std reserve(sizeof(T) * 2); if (_size == _capacity) - reserve(_capacity * 2); + reserve(_capacity + (_capacity / 2) + 1); _data[_size] = std::move(value); _size++; @@ -913,7 +913,7 @@ namespace std constexpr reference emplace_back(Args &&...args) { if (_size == _capacity) - reserve(_capacity * 2); + reserve(_capacity + (_capacity / 2) + 1); std::allocator_traits::construct(_alloc, _data + _size, std::forward(args)...); _size++;