Make dynamic array shrink on removal
This commit is contained in:
parent
43953da780
commit
ccf1950cf4
1 changed files with 5 additions and 0 deletions
|
|
@ -26,6 +26,11 @@ void dynarr_remove(DynamicArray* arr, usize idx) {
|
||||||
void* data = dynarr_at(arr, idx);
|
void* data = dynarr_at(arr, idx);
|
||||||
memmove(data, &((u8*)arr->data)[arr->data_size * (idx + 1)], (arr->len - idx - 1) * arr->data_size);
|
memmove(data, &((u8*)arr->data)[arr->data_size * (idx + 1)], (arr->len - idx - 1) * arr->data_size);
|
||||||
arr->len--;
|
arr->len--;
|
||||||
|
|
||||||
|
if (arr->len < arr->capacity / GROWTH_FACTOR) {
|
||||||
|
arr->capacity /= GROWTH_FACTOR;
|
||||||
|
arr->data = (void*)realloc(arr->data, arr->capacity * arr->data_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dynarr_push(DynamicArray* arr, void* data) {
|
void dynarr_push(DynamicArray* arr, void* data) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue