Binary search in structs
FreeSlave via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Apr 5 22:34:10 PDT 2015
On Sunday, 5 April 2015 at 23:15:04 UTC, w0rp wrote:
> On Sunday, 5 April 2015 at 23:06:27 UTC, FreeSlave wrote:
>> I have array of structs sorted by specific field. How can I
>> perform binary search using this field as a key?
>>
>> Currently I ended up with this, but it gives error:
>>
>> struct S
>> {
>> int i;
>> string s;
>> }
>>
>> import std.range;
>>
>> void main(string [] args)
>> {
>> S[] structs = [{1,"hello"}, {2,"world"}, {3, "!"}];
>> //sorted by i
>>
>> auto sortedRange = assumeSorted!(function bool(ref const S
>> item, int needle) {
>> return item.i < needle;
>> })(structs);
>>
>> sortedRange.trisect(2); //compilation error
>> }
>
> I believe you have to pass trisect a value of S. So S(2, "")
> would do here, I suppose.
Of course I could pass dummy object, but this is ugly solution. I
hoped there's some better one.
More information about the Digitalmars-d-learn
mailing list