mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-05-28 15:34:31 +00:00
fix(kernel/std): improve capacity growth strategy in std::vector operations
This commit is contained in:
parent
8c4c8d36de
commit
abb7899a9d
@ -784,7 +784,7 @@ namespace std
|
|||||||
{
|
{
|
||||||
size_type index = pos - begin();
|
size_type index = pos - begin();
|
||||||
if (_size == _capacity)
|
if (_size == _capacity)
|
||||||
reserve(_capacity * 2);
|
reserve(_capacity + (_capacity / 2) + 1);
|
||||||
|
|
||||||
for (size_type i = _size; i > index; i--)
|
for (size_type i = _size; i > index; i--)
|
||||||
_data[i] = _data[i - 1];
|
_data[i] = _data[i - 1];
|
||||||
@ -850,7 +850,7 @@ namespace std
|
|||||||
{
|
{
|
||||||
size_type index = pos - begin();
|
size_type index = pos - begin();
|
||||||
if (_size == _capacity)
|
if (_size == _capacity)
|
||||||
reserve(_capacity * 2);
|
reserve(_capacity + (_capacity / 2) + 1);
|
||||||
|
|
||||||
for (size_type i = _size; i > index; i--)
|
for (size_type i = _size; i > index; i--)
|
||||||
_data[i] = _data[i - 1];
|
_data[i] = _data[i - 1];
|
||||||
@ -891,7 +891,7 @@ namespace std
|
|||||||
reserve(sizeof(T) * 2);
|
reserve(sizeof(T) * 2);
|
||||||
|
|
||||||
if (_size == _capacity)
|
if (_size == _capacity)
|
||||||
reserve(_capacity * 2);
|
reserve(_capacity + (_capacity / 2) + 1);
|
||||||
|
|
||||||
_data[_size] = value;
|
_data[_size] = value;
|
||||||
_size++;
|
_size++;
|
||||||
@ -903,7 +903,7 @@ namespace std
|
|||||||
reserve(sizeof(T) * 2);
|
reserve(sizeof(T) * 2);
|
||||||
|
|
||||||
if (_size == _capacity)
|
if (_size == _capacity)
|
||||||
reserve(_capacity * 2);
|
reserve(_capacity + (_capacity / 2) + 1);
|
||||||
|
|
||||||
_data[_size] = std::move(value);
|
_data[_size] = std::move(value);
|
||||||
_size++;
|
_size++;
|
||||||
@ -913,7 +913,7 @@ namespace std
|
|||||||
constexpr reference emplace_back(Args &&...args)
|
constexpr reference emplace_back(Args &&...args)
|
||||||
{
|
{
|
||||||
if (_size == _capacity)
|
if (_size == _capacity)
|
||||||
reserve(_capacity * 2);
|
reserve(_capacity + (_capacity / 2) + 1);
|
||||||
|
|
||||||
std::allocator_traits<Allocator>::construct(_alloc, _data + _size, std::forward<Args>(args)...);
|
std::allocator_traits<Allocator>::construct(_alloc, _data + _size, std::forward<Args>(args)...);
|
||||||
_size++;
|
_size++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user