如何在c ++中从地图中检索值

时间:2016-07-11 23:58:24

标签: c++ maps

我有一些带有一些值的地图。然后我有一个返回一些字符串的函数,这个字符串将是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

1 个答案:

答案 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