检查地图中地图中是否存在元素

tec*_*ull 1 c++ stl

我有一张形式的地图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]已经存在于地图中而无需将其插入地图中。

jua*_*nza 5

您可以std::map::find与短路评估一起使用:

bool foundXY = instensityValue.find(x) != intensityValue.end() &&
               intensityValue[x].find(y) != intensityValue[x].end();
Run Code Online (Sandbox Code Playgroud)

std::map::count

bool foundXY = instensityValue.count(x) && intensityValue[x].count(y)
Run Code Online (Sandbox Code Playgroud)