gpt4 book ai didi

d2 : overlapping array copy

转载 作者:行者123 更新时间:2023-12-01 01:28:55 26 4
gpt4 key购买 nike

为了找出给定数组中哪个元素最常出现,我一直在使用 std.algorithm 中的 group 函数。首先,我会对数组进行排序(这似乎不再需要了),然后将其传递给 group,并对元组数组进行排序,以便我可以获取第一个元素。它曾经可以工作,但现在我收到错误:重叠数组副本。我正在为 win32 使用 2.053 版。我知道 D2 和 Phobos 正在 build 中,所以我并不感到惊讶。只是对导致问题的原因有点困惑。

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)

最佳答案

这看起来与错误 4789 相关。您的代码是正确的。见 http://d.puremagic.com/issues/show_bug.cgi?id=4789 .

关于d2 : overlapping array copy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com