我试图访问特定键的map值,只要该键存在。
要检查密钥是否存在,我有:
if (pos.find(test[i]) != pos.end())
在if语句中,我希望增加我的计数器:
posProb *= pos[test[i]]->second;
整个功能设置如下:
void compute(vector<string> test, map<string, double> pos, map<string, double> neg) {
double posProb = 1, negProb = 1;
for (int i = 0; i < test.size(); i++) {
if (pos.find(test[i]) != pos.end())
posProb *= pos[test[i]]->second * UNDERFLOWVAR;
else posProb *= pos.find("UNK")->second * UNDERFLOWVAR;
}
cout << posProb;
如何调整我目前拥有的内容,以便我可以正确访问地图的第二个变量(值)?
答案 0 :(得分:1)
这样的事情怎么样?
auto unk = pos["UNK"];
for (int i = 0; i < test.size(); i++) {
auto it = pos.find(test[i]);
posProb *= (it != pos.end() ? it->second : unk) * UNDERFLOWVAR;
}
答案 1 :(得分:1)
你的find
已经失败,所以也许你想要这样的东西:
void compute(vector<string> test, map<string, double> pos, map<string, double> neg) {
double posProb = 0, negProb = 0;
for (int i = 0; i < test.size(); i++) {
if (pos.find(test[i]) != pos.end()) {
posProb *= pos[test[i]]->second * UNDERFLOWVAR;
{
else {
if (pos.find("UNK") == pos.end()) {
pos("UNK") = 1; //??
}
posProb *= pos.find("UNK")->second * UNDERFLOWVAR;
}
}
cout << posProb;