[swift-dev] Dictionary Collision Resolution Guarantees

Ole Begemann ole at oleb.net
Fri Oct 14 03:52:29 CDT 2016


On 14/10/2016 02:46, Dave Abrahams wrote:

>> OK cool, is there any reason it’s even written down? I don’t see any code
>> that’s obviously relying on it. (seems fine to delete it?)
>
> It's written down because we've never formalized our index invalidation
> rules.  I didn't realize that this comment was related to index
> invalidation.  The guarantee mentioned is one we might want to give, at
> least under some circumstances.  We'll have to think about that more
> carefully.  In any case, it's not time to delete it yet.

For what it's worth, this rule is also explicitly mentioned in 
docs/IndexInvalidation.rst 
(https://github.com/apple/swift/blob/master/docs/IndexInvalidation.rst):

"Insertion into a Dictionary invalidates indexes only on a rehash. If a 
Dictionary has enough free buckets (guaranteed by calling an initializer 
or reserving space), then inserting elements does not invalidate indexes.

Note: unlike C++'s std::unordered_map, removing elements from a 
Dictionary invalidates indexes."

(I realize the stuff in /docs is not necessarily official documentation 
(right?), I just wanted to mention it.)


More information about the swift-dev mailing list