[英]Iterate and compare values in map<string, vector<string>> c++
[英]Compare variables from map with vector in c++
所以,我有一個輸入
x=20
y=40
z=x+y
w=20+40+80
s1="str1"
s2=s1+w
我將沒有運算符的變量存儲在映射中作為變量名稱及其類型,如 x int、y int 等。
map <string,string> finalMap
我將每行的變量拆分為每行的字符串向量作為標記 = {20,40,80}; 令牌 = {s1,w} 等。
vector<string> tokens;
如果我已經在地圖中聲明了一個令牌變量,我想比較令牌和 finalMap 中的變量。 例如 z=x+y, x 和 y 已經在 finalMap 中聲明,我想檢查那些 x 和 y 是否已經在 finalMap 中聲明以獲取它們的 dataType string 或 int。 我使用 double for 循環,但由於某種原因它不起作用。
for(auto i=finalMap.begin(); i!=finalMap.end();i++){
for(int j=0; j<tokens.size(); j++){
if(i->first==tokens.at(j)){
tokens.at(j)==i->second;
}
}
}
我在上面的 for 循環中遇到了麻煩,因為當我在之后檢查值時,它似乎沒有替換 map 中的 dataType。
for(int i=0; i<tokens.size()-1; i++){
if(checkType(tokens.at(i))!=checkType(tokens.at(i+1)))
return "undefined";
else
return checkType(tokens.at(i));
}
checkType() 返回字符串的變量類型,可以是字符串、整數或列表。 請不要降級我是新用戶,如果您需要更多詳細信息,請告訴我我會解釋。
這是輸出:
s1:str
s2:undefined
w:int
x:int
y:int
z:undefined
Double equals ==
是比較而不是賦值。
if(i->first==tokens.at(j)) {
tokens.at(j) == i->second;
}
您打算使用單個等於=
if(i->first==tokens.at(j)) {
tokens.at(j) = i->second;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.