Add a new API for `extract_and_get_next()` in b-tree that returns both the extracted node and an iterator to the next element in the container.
Motivation: it can be useful, when calling `extract` to maintain an iterator next to the location of the extracted element. `std::set`, et al. allow for this because they have iterator stability. `absl::{flat,node}_hash_{set,map}` allow for this because they are guaranteed not to rehash when elements are removed so they also have iterator stability across calls to `extract()`. But b-tree doesn't support this use case without this API because removing elements can cause rebalancing, which invalidates iterators. We can get the next iterator without this API using `lower_bound(node_handle.value())`, but that requires an extra lookup.
PiperOrigin-RevId: 488721247
Change-Id: Id66f17311bf53678f536e4e4f070775f5ce0c542
| Name |
Last commit
|
Last Update |
|---|---|---|
| .. | ||
| algorithm | Loading commit data... | |
| base | Loading commit data... | |
| cleanup | Loading commit data... | |
| container | Loading commit data... | |
| copts | Loading commit data... | |
| crc | Loading commit data... | |
| debugging | Loading commit data... | |
| flags | Loading commit data... | |
| functional | Loading commit data... | |
| hash | Loading commit data... | |
| log | Loading commit data... | |
| memory | Loading commit data... | |
| meta | Loading commit data... | |
| numeric | Loading commit data... | |
| profiling | Loading commit data... | |
| random | Loading commit data... | |
| status | Loading commit data... | |
| strings | Loading commit data... | |
| synchronization | Loading commit data... | |
| time | Loading commit data... | |
| types | Loading commit data... | |
| utility | Loading commit data... | |
| BUILD.bazel | Loading commit data... | |
| CMakeLists.txt | Loading commit data... | |
| abseil.podspec.gen.py | Loading commit data... |