我有一些带有一些值的地图。然后我有一个返回一些字符串的函数,这个字符串将是map中键的成员。我需要根据键检索值并将其传递给另一个函数,该函数将其作为参数。
map<string,int> SymbolTable;
SymbolTable["R0"]=0;
SymbolTable["R1"]=1;
SymbolTable["R2"]=2;
SymbolTable["R3"]=3;
string value=getValue(); //this one will return something from R0 to R3
nextFunction(SymbolTable[value]); // this part is wrong
如果我给予值==&#34; R0&#34;或者一些静态值,这是按预期工作的。但每当我传递这个动态值时,它总是返回0,所以我的nextFunction将0作为参数。 我试图从getValue()输出返回值来检查它返回的内容,并且它是正确的。我尝试了this和类似的方式,但都给了我同样的问题。有人可以指导我在这里做错了吗? TIY
答案 0 :(得分:1)
如果我给予值==&#34; R0&#34;或者一些静态值,这是有效的 预期。但每当我传递这个动态值时,它总是返回0
它只是意味着&#34;动态值&#34;您获得的不存在作为地图中的键。如果关联的密钥不存在,std::map
&#39; operator []
会插入默认的构造值。
要检查地图中是否存在value
,您可以执行以下操作:
string value=getValue();
if(SymbolTable.count(value)){
//key exists....
nextFunction(SymbolTable[value]); // this part should be correct now
}
或者您可以同样使用std::map::find