gpt4 book ai didi

d - 在 D 中的关联数组中查找最大值元素

转载 作者:行者123 更新时间:2023-12-04 18:09:21 25 4
gpt4 key购买 nike

在阅读了关于范围的文档后,我相信任何 std.algorithm 函数都应该适用于任何容器,包括关联数组,

但是下面的代码失败了:

double[double] freqIntensity;
foreach (complexval; resultfft)
{
freqIntensity[arg(complexval)]++;
}
minPos!("a > b")(freqIntensity);

有错误:
src\main.d(56): Error: template std.algorithm.minPos does not match any function template declaration. Candidates are:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\algorithm.d(6321): std.algorithm.minPos(alias pred = "a < b", Range)(Range range) if (isForwardRange!(Range) && !isInfinite!(Range) && is(typeof(binaryFun!(pred)(range.front, range.front))))
src\main.d(56): Error: template std.algorithm.minPos(alias pred = "a < b", Range)(Range range) if (isForwardRange!(Range) && !isInfinite!(Range) && is(typeof(binaryFun!(pred)(range.front, range.front)))) cannot deduce template function from argument types !("a > b")(double[double])
src\main.d(56): Error: template instance minPos!("a > b") errors instantiating template

当然,我可以迭代或做其他技巧,但我不想像在 C++ 中那样犯同样的错误(比如用 C++ 编写 C 代码),我想让语言的特性为我工作。
找到关联数组的最大值元素的最佳方法是什么。

最佳答案

使用 byValue 避免复制。请注意,这适用于 HEAD,并将在下一个版本中部署。

import std.stdio, std.algorithm;

void main() {
double[double] freqIntensity = [1.0 : 2.0, 2.3 : 8.9];
writeln(minPos!("a > b")(freqIntensity.byValue));
}

关于d - 在 D 中的关联数组中查找最大值元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812904/

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