Re: Is there a proposal to fix the operator[] (rvalue/lvalue issues)??
jose.diego@gmail.com () wrote (abridged):
I made the following function to access a map elements to simulate the
operator[] in a const map
[snip get() function that returns a default value]
If the std::map<>::operator[] could be used as an rvalue, it could have
the above implementation
What do you think?
I think it differs too much from operator[] to have that name. It's
result type is different, and it never inserts missing keys.
However, I agree it is a useful function. I would call it something like,
"at_if_absent", or "at_else". And I'd provide it for all the indexed
containers. For example:
const value &at_else( const vector<value> &vec, size_t key,
const value &ifAbsent=value() ) {
return (key < vec.size()) ? vec[key] : ifAbsent;
}
The non-const version makes sense, too, but is slightly problematic in C++
because we can't bind non-const references to temporary values. It would
still be useful with non-temporaries, eg:
std::vector<int> counts(100);
int missingCount = 0;
for (int i = 0; i < 1000; ++i)
at_else( counts, rand()/100, missingCount ) += 1;
-- Dave Harris, Nottingham, UK.
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]