Getting associative array value by reference
Mark Isaacson via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Mar 31 20:11:57 PDT 2015
I'm presently trying to create the value of a key in an
associative array if it does not exist, and then maintain a
reference/pointer to the value. This is what I came up with, but
it seems really crufty and I feel that there must be a cleaner
way:
Value[string] assocArray;
foreach (...) {
auto value = key in assocArray;
if (!value) {
assocArray[key] = Value();
value = &assocArray[key];
}
value.memberA++;
value.memberB = "foobar";
}
The goal was to avoid writing:
Value[string] assocArray;
foreach (...) {
assocArray[key].memberA++;
assocArray[key].memberB = "foobar";
}
and save a lookup call, but my solution is both less readable and
also performs worse for keys not already in the associative
array...
More information about the Digitalmars-d-learn
mailing list