As an implementation note: I'd recommend using an Equatable
-based implementation for input sizes under ~256, particularly when the Collection
is an Array
.
// Rather than using an Array here, the indices could be generated on-demand.
var indicesToRemove = [Index]()
for i in self.indices.dropFirst() {
if self[self.startIndex..<i].contains(self[i]) {
indicesToRemove.append(i)
}
}
self.remove(elementsAtSortedIndices: indicesToRemove)
This can also be done more efficiently if a new collection is being generated (rather than being performed in-place) since the new, smaller collection can be checked for membership rather than the old, duplicate-containing one.