所以我有2个问题:
Q1:我看到很多代码,它们在其中检查键的现有值,如下所示:
map<string,int> MAP; // lets say this is the map
if (MAP [REC [iter_i]]) // the key is basically a string
use previously calculated value
else
perform recursion and obtain value
我对if语句有点困惑。它会检查该键是否没有值,因此是否为空,还是会检查该键的值是否为零?两者是不同的东西。例如,该值可能为零,该值是先前计算的,但是如果使用后一种逻辑,它将继续进行重新计算,而不会真正使用较早的存储值。
Q2:我正在尝试用C ++实现下面的地图
map<int,string> check;
在我的代码中的某处,我正在这样做:
string k; // defining a new string
if (check[iter_i]) // check if a value exists for the key iter_i
{
k = check[iter_i]; // assign that value to string k
}
else // if the key hasn't been assigned a value, then assign as below
{
k = some string s; //get k from somewhere else
check[iter_i] = k // assign this k as value to the key
}
当我这样做时,it gives me this error
在那之后,我想,如果在定义地图本身时初始化值check[i] = " ", for all i
,则可以采用另一种方法。然后,我的if语句仅需要检查映射值是" "
还是其他字符串。
这样做时,我在定义地图时遇到了问题。我是这样定义的:
map<int,string> check(2000," ");
代码显示了一些我无法理解的错误,我认为我在定义地图时犯了一个新手错误。我究竟做错了什么?