D 如何对关联数组排序?
上述方法不起作用。一个排序是如何进行的呢?你不能——这没有意义 关联数组也称为“字典”或“映射”;D中的特殊变化是一个哈希表。它们是而不是数组。对它们进行排序会破坏它们为您提供快速查找时间的能力D 如何对关联数组排序?,d,D,上述方法不起作用。一个排序是如何进行的呢?你不能——这没有意义 关联数组也称为“字典”或“映射”;D中的特殊变化是一个哈希表。它们是而不是数组。对它们进行排序会破坏它们为您提供快速查找时间的能力 如果需要快速查找时间,可以考虑使用。 < P> D的内置关联数组是。它们是未分类的,对它们进行分类是没有意义的。排序唯一有意义的时间是在AA上迭代时,要做到这一点,需要将它们放在一个新的容器中。所以,你可以这样做 float[float] aa = [2.2:7.7, 3.3:6.6, 1.1:4.4]
如果需要快速查找时间,可以考虑使用。
< P> D的内置关联数组是。它们是未分类的,对它们进行分类是没有意义的。排序唯一有意义的时间是在AA上迭代时,要做到这一点,需要将它们放在一个新的容器中。所以,你可以这样做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本身进行排序。如果您想要一个排序的映射,那么您需要使用类似这样的东西-尽管将其作为一个映射而不是一个集合来运行确实需要一些工作(例如,排序函数必须只按键排序,并且当将内容传递给某些函数时,您需要一个具有伪值的元组)
std::map
已排序,而std::unordered\u map
未排序。与其称之为关联数组,不如称之为hash
。@Arlen关联数组是一个非常有效的术语。就我个人而言,我会称之为哈希表,但称之为关联数组是非常准确的:@Arlen:它也称之为关联数组。你需要以给定的顺序显示结果,还是只需要检查两个不同的AA实例是否相等?@我需要以给定的顺序显示结果,就像std::map
。我可能最终会使用std.container
。
auto keys = aa.keys;
sort(keys);