Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 以D中的值排序范围访问哈希表_Sorting_Range_Hashtable_D - Fatal编程技术网

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