Чтобы выяснить, какой элемент чаще всего встречается в данном массиве, я использовал групповую функцию из std.algorithm.Сначала я отсортировал массив (который больше не нужен), затем передал его в группу и отсортировал массив кортежей, чтобы я мог взять первый элемент.Раньше это работало, но теперь я получаю ошибку: перекрывающийся массив.Я использую версию 2.053 для win32.Я знаю, что D2 и Фобос находятся в стадии разработки, поэтому я не очень удивлен.Просто немного озадачен тем, что вызывает проблему.
import std.stdio, std.algorithm, std.array;
void main() {
int[] arr = [ 1, 2, 2, 2, 2, 3, 4, 4, 4, 5 ];
auto a = sort!("a[1] > b[1]")(array(group(arr)))[0];
}
Я получаю ошибку:
object.Exception@src\rt\arraycat.d(40): overlapping array copy
----------------
42EB58
42E9CF
4061F8
4060A0
406166
405EE8
402072
408898
4088D7
4084D3
4532C9
----------------
Содержимое массива имеет большое значение.Следующий код компилирует и печатает правильный результат:
import std.stdio, std.algorithm, std.array;
void main() {
int[] arr = [ 1, 2, 3, 4, 4, 4, 5 ];
auto a = sort!("a[1] > b[1]")(array(group(arr)))[0];
writeln(a);
}
// prints: Tuple!(int,uint)(4, 3)