【问题标题】:C++ make_pair map find secondC++ make_pair map 找到第二个
【发布时间】:2018-06-01 22:54:49
【问题描述】:

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

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;
}

但我需要另一种方法,它可以在第二个参数中搜索,看起来就像我展示的那样。如果可能的话,我不想使用 for 或 while 循环。据我所知,我可能需要 find_if 搜索,但我无法处理。

提前感谢您的帮助!

【问题讨论】:

  • 第二个参数搜索是什么意思?
  • Find mapped value of map的可能重复
  • @0x499602D2 我的意思是 101、102、103 值。
  • @PaulVarghese 谢谢,它正在工作!但是我们可以用 find 或 find_if 或类似的东西来做吗?
  • @Gregori 이원용对该副本的回答显示了find_if的一个可能示例

标签: c++ stdmap


【解决方案1】:

您可以使用 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]

【讨论】:

  • 由于某种原因我忘了说我正在使用 vs 2008,并且这种方法对此不起作用。顺便说一句,谢谢你,如果你能参加 2008 年的比赛,我很高兴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
相关资源
最近更新 更多