2013-01-01 16 views
6

Czy istnieje łatwiejszy sposób sprawdzenia, czy wywołanie std::unordered_map::insert powiodło się niż napisanie tego gigantycznego bloku kodu?Prostsza forma std :: unordered_map :: insert?

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 
} 

Odpowiedz

12

jak o tylko:

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

?

Alternatywnie, typedefs może być przydatny do uporządkowania tego typu rzeczy.

Ponadto, jeśli używasz C++ 11, a następnie można użyć słowa kluczowego auto wywnioskować typ:

+0

A jeśli potrzebujesz dostępu do '.first' po sprawdzeniu' .second', możesz użyć 'auto', aby uprościć długi typ wartości zwracanej. –

Powiązane problemy