检查地图是否包含某个值
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.
您好,我现在遇到了一个问题,或者是我想的太复杂了。
我有一张看起来像这样的地图:
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.