| ▲ | amluto 8 hours ago | |
It’s not so brilliant when you have an array of size 2^n and you append and then pop off the end in a loop and each operation takes time proportional to the length of the vector. Usually, dynamic arrays aim for amortized constant time for append and pop. This trick loses that property. | ||
| ▲ | mananaysiempre 5 hours ago | parent [-] | |
Restoring it only needs one additional bit of storage, however (whether the buffer is currently 2⌊n/2⌋ or 4⌊n/2⌋ elements in size), which we can probably squeeze in somewhere. More disappointing is that libc still forces us to use the free(p) API, without a length argument, meaning we are still paying to store a(n approximation of) the length somewhere in the allocation metadata. | ||