检查地图是否包含某个值

check if map contains a certain value

您好,我现在遇到了一个问题,或者是我想的太复杂了。

我有一张看起来像这样的地图:

  std::map<int,int> mymap;

然后我这样做插入值

 std::map<char,int>::iterator it = mymap.begin();
  mymap.insert (it, std::pair<int,int>(1,300));  

现在我想知道地图是否包含值 300。

假设我有一个名为 input 的变量,其值为 300。

int input = 300;

现在有了这个输入,我想检查我的地图中是否存储了值 300。

我知道使用 map.find() 我可以检查某个键是否存在于地图中。 但是我不能在我的例子中使用 map.find(input) 因为 300 不是关键而是值。

如何检查我的地图中是否有值 300?

您可以使用 std::find_if 来查找某个值是否存在于 std::map 中或未显示在下面:

#include <iostream>
#include <map>
#include <string>
 #include <algorithm>

int main()
{
    // Create a map of three strings (that map to integers)
    std::map<int, int> m { {1, 10}, {2, 15}, {3, 300}, };
    
   int value = 300;
   auto result = std::find_if(std::begin(m), std::end(m), [value](const auto& mo) {return mo.second == value; });
 
   if(result != std::end(m))
   {
       std::cout<<"found"<<std::endl;
   }
    else 
    {
        std::cout<<"not found"<<std::endl;
    }
}

上面程序的输出可见here.