@lukasa Oh gosh, sorry, I pasted output after modifying a code a little.
Here's a code:
var set = SortedSet<Int>()
for i in 0..<50 {
set.insert(i)
}
set.forEach {
let i = set.index(of: $0)!
let v = set[i]
let d = set.distance(from: set.startIndex, to: i)
print("\(v) --> \(d)")
if i == set.startIndex {
print("Current `index` equals `startIndex`.")
print("set[index] = \(set[i]). set[startIndex] = \(set[set.startIndex])")
}
}
And full output:
0 --> 0
Currentindex
equalsstartIndex
.
set[index] = 0. set[startIndex] = 0
1 --> 1
2 --> 0
Currentindex
equalsstartIndex
.
set[index] = 2. set[startIndex] = 0
3 --> 3
4 --> 4
5 --> 1
6 --> 6
7 --> 7
8 --> 0
Currentindex
equalsstartIndex
.
set[index] = 8. set[startIndex] = 0
9 --> 9
10 --> 10
11 --> 9
12 --> 12
13 --> 13
14 --> 10
15 --> 15
16 --> 16
17 --> 1
18 --> 18
19 --> 19
20 --> 18
21 --> 21
22 --> 22
23 --> 19
24 --> 24
25 --> 25
26 --> 2
27 --> 27
28 --> 28
29 --> 27
30 --> 30
31 --> 31
32 --> 28
33 --> 33
34 --> 34
35 --> 3
36 --> 36
37 --> 37
38 --> 36
39 --> 39
40 --> 40
41 --> 37
42 --> 42
43 --> 43
44 --> 38
45 --> 45
46 --> 46
47 --> 47
48 --> 48
49 --> 49
The issue is easiest to notice when index
equals to startIndex
but getting values for those indexes returns different results.
It definitely looks like a bug. I'll report on Github.