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