我有一张形式的地图map<key1, map<key2, value> > :
例如:我将强度值存储在以下地图的二维坐标(x,y)处:
map<int, map<int, double> > intensityValue;
Run Code Online (Sandbox Code Playgroud)
现在,我要检查此地图中是否存在坐标(x,y)处的强度值。我知道的一种方法是检查:
if(intensityvalue[x][y] >=0)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果intensityValue[x][y]map中不存在,那么在检查后它将自动插入intensityValue[x][y]到我不需要的地图中。
请提出一种有效的方法,这样我就可以检查是否intensityValue[x][y]已经存在于地图中而无需将其插入地图中。
您可以std::map::find与短路评估一起使用:
bool foundXY = instensityValue.find(x) != intensityValue.end() &&
intensityValue[x].find(y) != intensityValue[x].end();
Run Code Online (Sandbox Code Playgroud)
bool foundXY = instensityValue.count(x) && intensityValue[x].count(y)
Run Code Online (Sandbox Code Playgroud)