On Tuesday, 30 May 2017 at 18:05:02 UTC, cym13 wrote:
On Tuesday, 30 May 2017 at 17:57:04 UTC, Lyle wrote:
Hi,

I have an associative array of type int[ulong] and I'm trying to get the index of the maximum value, like this:

int[ulong] aa = [1UL: 2000,
                 2UL: 5000,
                 5UL: 1000];

writeln(aa.maxIndex); // should print 2

Can anyone help me out?

Many thanks,
Lyle

Simple enough: get all key/values pairs in the AA, and ask for the element which is the maximum relatively to the value, then take its key.

    auto maxIndex(int[ulong] aa) {
        import std.algorithm;

        return aa.byKeyValue
                 .maxElement!(x => x.value)
                 .key;
    }

Thank you! I used this solution in the end. I had looked at the .byKeyValue and .byPair methods but they didn't seem to work - turns out I was using an old DMD version!

Reply via email to