Add new API Vector::insert and Vector::remove - #96
Open
White-Green wants to merge 7 commits into
Open
Conversation
Owner
|
Hi. I'll take a look at this but it will take me some time to review, as I've been busy. Probably the end of next month. |
Author
|
Thank you for taking the time. Please don't push yourself as I'm not in a hurry. |
|
@orium this would be useful, consider putting this in the priority queue? |
orium
force-pushed
the
main
branch
2 times, most recently
from
June 24, 2026 22:34
b02d9a1 to
45451fa
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds
insertandremoveAPIs toVector.closes: #95
Implementation
Previously, a Node could hold up to
1 << bitschild Nodes. By extending the range of child Nodes to(i << bits) / 2..=1 << bits, we achieve fasterinsertandremoveoperations. This also makes it easier to implementVector::{push_front, drop_first}(#17).Regressions
Due to the uncertainty in the number of child elements in a Node, index calculations in methods like
gethave become more complex. As a result,Vector::getis approximately 3.5 times slower in benchmarks. Additionally, many white-box tests related to the Node structure have been rewritten.