how use lowerBound with just sorting key, not complete values
bearophile
bearophileHUGS at lycos.com
Tue Nov 12 07:51:52 PST 2013
Daniel Davidson:
> Is there a way to search an array I know is ordered by date by
> only supplying date?
You can use a map to perform a projection:
import std.stdio, std.range, std.datetime, std.algorithm,
std.array;
struct S {
Date date;
string foo;
}
void main() {
auto sarr = [S(Date(2000, 1, 1), "x"),
S(Date(2000, 2, 1), "a"),
S(Date(2000, 3, 1), "foo")];
assert(sarr.isSorted!q{ a.date < b.date });
auto needle = S(Date(2000, 2, 1));
sarr
.assumeSorted!q{ a.date < b.date }
.lowerBound(needle)
.writeln;
sarr.writeln;
sarr
.map!(s => s.date)
.assumeSorted
.lowerBound(Date(2000, 2, 1))
.writeln;
}
Output:
[S(2000-Jan-01, "x")]
[S(2000-Jan-01, "x"), S(2000-Feb-01, "a"), S(2000-Mar-01, "foo")]
[2000-Jan-01]
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list