Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c++;_C++_Maps - Fatal编程技术网

C++ 如何在c++;

C++ 如何在c++;,c++,maps,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 some

我有一张带有一些值的地图。然后我有一个函数返回一些字符串,这个字符串将是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
map符号化;
可符号化[“R0”]=0;
SymbolTable[“R1”]=1;
SymbolTable[“R2”]=2;
可符号化[“R3”]=3;
字符串值=getValue()//这个将从R0返回一些东西到R3
下一个函数(SymbolTable[值];//这部分是错误的
如果我给出value==“R0”或某个静态值,那么这是按预期工作的。但每当我传递这个动态值时,它总是返回0,所以我的nextFunction将0作为参数。
我试图从getValue()输出返回值,以检查它返回的内容,结果是正确的。我尝试过许多类似的方法,但都给了我同样的问题。有人能告诉我我做错了什么吗?蒂伊

如果我给value==“R0”或某个静态值,这就是 预期。但每当我传递这个动态值时,它总是返回0

它只是意味着您获得的“动态值”在地图中不作为键存在如果关联的键不存在,则插入默认构造值

要检查地图中是否存在
,可以执行以下操作:

string value=getValue();
if(SymbolTable.count(value)){
    //key exists....
    nextFunction(SymbolTable[value]);  // this part should be correct now
}

或者你也可以同样使用

可能值得一提的是如何使用
std::map::find()
,来解决这个问题。我试图从getValue()输出返回值,这正是我所期望的@πάνταῥεῖ, 谢谢完成。尽管如此,我对
count()。我没有意识到这一点,很抱歉:-)…@EbinPIssac演示了如何使用动态值:。您应该发布完整的实际代码。