查看c+中是否存在密钥+;地图 我有一个C++映射,其中值类型是布尔O/COD>。我需要查看地图中是否存在密钥,如果不存在,则返回false。这是我现在的代码: try { return board.at[{x, y}]; } catch (const std::out_of_range& oor) { return false; }
我不想使用查看c+中是否存在密钥+;地图 我有一个C++映射,其中值类型是布尔O/COD>。我需要查看地图中是否存在密钥,如果不存在,则返回false。这是我现在的代码: try { return board.at[{x, y}]; } catch (const std::out_of_range& oor) { return false; },c++,C++,我不想使用[]运算符,因为如果该值不存在,它将初始化该值。有没有办法在没有try块的情况下查看map中是否存在该值?您可以使用std::map::find,如果找到,它将返回元素的迭代器;如果找不到,则返回.end return board.find({x, y}) != board.end(); 您可以使用std::map::find,如果找到元素,将返回迭代器;如果未找到元素,则使用.end return board.find({x, y}) != board.end(); 返回我的映射
[]
运算符,因为如果该值不存在,它将初始化该值。有没有办法在没有try块的情况下查看map中是否存在该值?您可以使用std::map::find
,如果找到,它将返回元素的迭代器;如果找不到,则返回.end
return board.find({x, y}) != board.end();
您可以使用
std::map::find
,如果找到元素,将返回迭代器;如果未找到元素,则使用.end
return board.find({x, y}) != board.end();
返回我的映射。count({x,y})
是惯用的方法,并且具有隐式bool
转换的优点
C++20添加了bool contains(const Key&Key)const
返回我的映射。count({x,y})
是惯用的方法,并且具有隐式bool
转换的优点
C++20添加
bool contains(const-Key和Key)const
board.find({x,y})!=board.end()
或board.count({x,y})>0
(或者如果您有C++20board.contains({x,y})
),您可以使用find
,如果您需要它返回的迭代器,则使用count
board.find({x,y})!=board.end()或board.count({x,y})>0
(或者如果您有C++20board.contains({x,y})
),您可以使用find
,如果需要它返回的迭代器,则使用count
。