簡體   English   中英

將映射中的變量與 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM