我试图在c ++中循环浏览地图并将密钥与某些东西进行比较,但它不起作用,这是我的代码:
map<string, vector> mymap:
for ( auto const& it : mymap ){
if (it.first == 'e'){
//do something
}
}
答案 0 :(得分:4)
您应该使用find()
方法在地图中搜索值。这样,您就不需要自己迭代地图。例如:
auto it(mymap.find("e"));
if (it != mymap.end())
{
// do something
}
编辑:正如Angew所说,在你的代码示例中,你试图通过一个字符('e'
)找到一个字符串。在比较中使用双引号来比较正确的类型("e"
)。
答案 1 :(得分:0)
您可以使用&#34;查找&#34;能够在容器中获得它的可用性。
map<string, vector> mymap:
for ( auto const& it : mymap ){
if (it.find("e") != it.end()){
//do something
}
}
答案 2 :(得分:-1)
it.first是一个字符串,你试图将它与字符文字进行比较&#39; e。你可以将它与字符串文字进行比较&#34; e&#34;然而。或者调用find方法查找具有此键的项目,而不进行循环。