user81993
user81993

Reputation: 6613

How to extract the value of the pair retuned by unordered_map::emplace?

I'm trying to make my code 1 line shorter, a noble cause. I have this unordered map

std::unordered_map<std::string, int> um;

and I want to assign the integer to a variable on the same line where I emplace a pair into the unordered map like so

int i_want_132_here = um.emplace("hi", 132).first.???;

problem is, I have no idea what to do with [return value of unordered_map::emplace].first

In the debugger I can see that "first" contains ("hi", 132) but how do I access those values?

Upvotes: 0

Views: 438

Answers (1)

Massimo Costa
Massimo Costa

Reputation: 1860

emplace returns a pair<iterator, bool>.

So you should do:

int i_want_132_here = (*um.emplace("hi", 132).first).second;

alternative syntax:

int i_want_132_here = um.emplace("hi", 132).first->second;

In general I prefer (*it) form instead of it->.

Upvotes: 2

Related Questions