6

Is there an easier way to check whether an std::unordered_map::insert call succeeded than writing this mammoth block of code?

std::pair< T1, T2 > pair(val1, val2); std::pair< std::unordered_map< T1, T2 >::const_iterator, bool> ret = _tileTypes.insert(pair); if(!ret.second) { // insert did not succeed } 
0

2 Answers 2

11

How about just:

if(!_tileTypes.insert(std::make_pair(val1, vla2)).second) { // insert did not succeed } 
Sign up to request clarification or add additional context in comments.

Comments

10
if (!_tileTypes.insert(pair).second) 

?

Alternatively, typedefs can be useful to tidy this sort of thing up.

Also, if you're using C++11, then you can use the auto keyword to infer the type:

auto ret = _tileTypes.insert(pair); 

1 Comment

And if you need access to .first after checking .second, you can use auto to simplify the long return value type.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.