Sorting 以D中的值排序范围访问哈希表
如果我有一个哈希表Sorting 以D中的值排序范围访问哈希表,sorting,range,hashtable,d,Sorting,Range,Hashtable,D,如果我有一个哈希表File[string]\u subs,并且想要以排序的方式访问它的值,有没有比简单地通过 auto ssubs = new File[_subs.length]; // preallocate sorted subs size_t ix = 0; foreach (sub; _subs) { ssubs[ix++] = sub; // set new reference to sub } ssubs.sort!((a, b) => (a.timeLastMo
File[string]\u subs
,并且想要以排序的方式访问它的值,有没有比简单地通过
auto ssubs = new File[_subs.length]; // preallocate sorted subs
size_t ix = 0;
foreach (sub; _subs) {
ssubs[ix++] = sub; // set new reference to sub
}
ssubs.sort!((a, b) => (a.timeLastModified >
b.timeLastModified));
return ssubs;
我建议跳过foreach循环并使用
.values
,如下所示:
auto ssubs = _subs.values.sort!((a, b) => (a.timeLastModified > b.timeLastModified));
我认为最好不要在不需要的元素之间添加依赖项(比如for循环)。这样做的原因是,在没有它的情况下更容易使代码并行。我建议跳过foreach循环并使用
.values
,如下所示:
auto ssubs = _subs.values.sort!((a, b) => (a.timeLastModified > b.timeLastModified));
我认为最好不要在不需要的元素之间添加依赖项(比如for循环)。这样做的原因是,没有它就更容易使代码并行。 < P>如果你发现自己经常做这个操作,请考虑尝试<代码> RedBlackTree <代码>。这是通常的排序与运行时复杂度的权衡:当访问和插入元素到无序的HASMAP(HASSET)中时,像AA(O)(1)一样,在有序映射(set)上的操作类似于Read ButoSet是O(log(n))。 < P>如果您发现自己经常进行该操作,请考虑尝试<代码> RedBlackTree < /代码>。这是通常的排序与运行时复杂性的折衷:访问和插入元素到无序的hashmap(hashset)中(如AA)是O(1),而在有序的map(set)上(如RedBlackTree)的相同操作是O(log(n))。另请参见
。这里提到的byValue
也请参见。这里提到的byValue
: