how to iterate over an AA by key-value pair (tuple)?
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Thu Feb 13 17:50:59 PST 2014
    
    
  
On Thu, 13 Feb 2014 19:06:45 -0500, timotheecour  
<timothee.cour2 at gmail.com> wrote:
> On Thursday, 13 February 2014 at 23:56:35 UTC, Timothee Cour
> wrote:
>> how to iterate over an AA by key-value pair (tuple)?
>> use case:
>> avoid interrupting UFCS chains, eg:
>> foo.generate_aa.byKeyValue.filter!(a=>a[0].isLower).map!(a=>a[1]) ...
>> of course I could roll my own function but I was wondering if there's
>> already a way.
>
>
> is there anything more efficient than this?
>
> auto byKeyValue(T)(T a)if(isAssociativeArray!T){
>     return a.byKey.map!(b=>tuple(b, a[b]));
> }
Of course. The a[b] lookup is significant in the complexity, it's  
amortized constant, and the constant is not always small. Consider that  
all keys and values are already stored in structs inside the AA. With  
low-level access, it would be trivial to make an efficient tuple generator  
that did not need to lookup values by keys.
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list