kodecocodes / swift-algorithm-club

Algorithms and data structures in Swift, with explanations!
MIT License
28.76k stars 5.01k forks source link

extend OrderedSet with convenience methods ensure_at_front/end.. #981

Open dec1 opened 3 years ago

dec1 commented 3 years ago

…l eg in implementing a list of "recent documents"

Checklist

Description

- Bugfix: Fails to insert at index 0 into empty container (off by one error) - For situations such as implementing a list of "recent documents" eg for text editor, it's necessary to maintain an ordered set, but with the additional capability of prepending/appending a new instance if the object doesn't yet exist in the set, **or** if it does, shifting the object to the front/back. This functionality has been added. Furthermore, the convenience method `contains`, which can be used by clients without requiring them to know the internal representation of the class, (and `debug_str` useful for printing/debugging)