如何从DateTime集合中获取最新日期?
我得到了类型为DateTime DateTime[]dts的数组;如何从DateTime集合中获取最新日期?,datetime,d,Datetime,D,我得到了类型为DateTime DateTime[]dts的数组; 如何从中获取最新日期?这是一个愚蠢的示例,但它的作用是: import std.datetime; import std.algorithm; import std.stdio; import core.thread; void main(){ DateTime[] times; // array of DateTimes filled with dummy data for(int i=0; i<5;
如何从中获取最新日期?这是一个愚蠢的示例,但它的作用是:
import std.datetime;
import std.algorithm;
import std.stdio;
import core.thread;
void main(){
DateTime[] times; // array of DateTimes filled with dummy data
for(int i=0; i<5; i++){
times ~= DateTime() + dur!"seconds"(2 * i);
}
// This is the important line to take away from this.
// It uses std.algorithm.sort to sort the array in ascending order.
// .front then takes the first item from the result
auto t = times.sort!((a,b) => a > b).front;
writefln("All Times: %s", times);
writefln("Most Recent Time: %s", t);
}
是另一个标准算法选项
auto latestDateTime=dts.minPos!a、 b=>a>b.前方
不要让minPos这个名字来决定你,它也可以用来找到最大值,只要告诉它使用不同的比较,就像我上面所做的那样,如果你想要最早的日期,dts.minPos.front就足够了。
与大多数D算法一样,minPos返回一个范围,因此需要front来实际获取元素
minPos应该比sort做更少的工作,而且它避免了sort改变原始数组的问题。不需要排序。使用minPos可能不是获取最大值的最方便的方法,因为它返回一个范围 您可以使用reduce和max作为谓词。这种方法将适用于任何范围或类似的元素,而不仅仅是DateTime
排序是一种破坏性的算法,它在适当的位置进行排序,而且这会比实际需要做更多的工作来获得值是的,你说得对。你的答案是减少!马克斯好多了!sort是一个急切的算法,它将在适当的位置对数据进行排序,不涉及延迟计算
import std.datetime;
import std.algorithm;
import std.stdio;
void main(){
DateTime[] times; // array of DateTimes filled with dummy data
foreach (i; 0 .. 5) {
times ~= DateTime() + dur!"seconds"(2 * i);
}
auto t = times.reduce!max;
writefln("All Times: %s", times);
writefln("Most Recent Time: %s", t);
}