C++ make_pair地图找到第二个

C++ make_pair map find second

本文关键字:第二个 地图 pair make C++      更新时间:2023-10-16

我有这样的地图(第一个和第二个参数都是唯一的(:

std::map<DWORD, DWORD> mapTest;
mapTest.insert(make_pair(1, 101));
mapTest.insert(make_pair(2, 102));
mapTest.insert(make_pair(3, 103));

我有一个搜索器,它非常适合地图的第一个值:

bool SearchInMap(DWORD firstmap, DWORD * secondmap)
{
if (mapTest.end() == mapTest.find(firstmap))
return false;
*secondmap = mapTest[firstmap];
return true;
}

但是我需要另一种方法,它可以在第二个参数中搜索,看起来像我展示的。如果可能的话,我不想在周期中使用。我知道我可能需要find_if搜索,但我无法处理它。

提前感谢您的帮助!

您可以使用lambdas以简单的方式做到这一点。

DWORD val = 103;
auto result = std::find_if(stMap.begin(), stMap.end(), [val](const auto& mo) {return mo.second == val; });
DWORD foundkey = result->first;

重要的是捕获您的输入

[val]