2013-01-01 26 views
6

有沒有更容易的方法來檢查std::unordered_map::insert調用是否成功,而不是編寫這個龐大的代碼塊?簡單形式的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 
} 

回答

12

如何只:

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

或者,typedefs可以用來整理這類東西。

另外,如果您正在使用C++ 11,那麼你可以使用關鍵字auto推斷類型:

+0

如果你需要訪問在檢查'.second'後檢查'.first',可以使用'auto'來簡化長返回值類型。 –