gpt4 book ai didi

d - 如何对关联数组进行排序?

转载 作者:行者123 更新时间:2023-12-03 01:27:25 25 4
gpt4 key购买 nike

float[float] aa = [2.2:7.7, 3.3:6.6, 1.1:4.4];
std.sort(aa);
assert(aa == [1.1:4.4, 2.2:7.7, 3.3:6.6]);

上面的方法不起作用。如何就地对 aa 进行排序?

最佳答案

D 的内置关联数组是 hash tables 。它们是未排序的,对它们进行排序是没有意义的。唯一有意义的排序是在迭代 AA 时,而要做到这一点需要将它们放入一个新容器中。所以,你可以做类似的事情

auto keys = aa.keys;
sort(keys);

但你不能对 AA 本身进行排序。如果你想要一个排序的 map ,那么你需要使用类似 std.container.RedBlackTree 的东西。 - 尽管它确实需要一些工作才能使其充当映射而不是集合(例如,排序函数必须仅对键进行排序,并且当将内容传递给某些函数时,您需要一个具有虚拟值的元组) .

这就是为什么 Java 有 HashMapSortedMap 以及为什么 C++ 有 unordered_map (C++11) 和 map 。它们都是 map ,但它们具有非常不同的特征 - 特别是在排序和查找时间方面。

关于d - 如何对关联数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060625/

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