Mr. Smith
Mr. Smith

Reputation: 4506

simpler form of std::unordered_map::insert?

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
}

Upvotes: 6

Views: 711

Answers (2)

Ivaylo Strandjev
Ivaylo Strandjev

Reputation: 70929

How about just:

if(!_tileTypes.insert(std::make_pair(val1, vla2)).second) {
    // insert did not succeed
}

Upvotes: 11

Oliver Charlesworth
Oliver Charlesworth

Reputation: 272507

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);

Upvotes: 10

Related Questions