比较map中的变量和c ++中的向量

Posted

技术标签:

【中文标题】比较map中的变量和c ++中的向量【英文标题】:Compare variables from map with vector in c++ 【发布时间】:2020-03-05 05:40:29 【问题描述】:

所以,我有一个意见

x=20
y=40
z=x+y
w=20+40+80
s1="str1"
s2=s1+w

我将不带运算符的变量作为变量名及其类型(如 x int、y int 等)存储在映射中。

map <string,string> finalMap

我将每行的变量拆分为每行的字符串向量,标记为 tokens = 20,40,80;令牌 = s1,w 等。

vector<string> tokens;

如果我已经在映射中声明了一个标记变量,我想比较标记和 finalMap 中的变量。例如 z=x+y, x 和 y 已经在 finalMap 中声明,我想检查那些 x 和 y 是否已经在 finalMap 中声明以获取它们的 dataType 字符串或 int。我使用双循环,但由于某种原因它不起作用。

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   

【问题讨论】:

【参考方案1】:

双等于== 是比较而不是赋值。

if(i->first==tokens.at(j)) 
    tokens.at(j) == i->second;

您的意思是使用单个等于 =

if(i->first==tokens.at(j)) 
    tokens.at(j) = i->second;

【讨论】:

以上是关于比较map中的变量和c ++中的向量的主要内容,如果未能解决你的问题,请参考以下文章

c语言结构体变量怎么比较大小假设p,e都是如下类型的结构体变量?

Golang中的struct能不能比较

产量和静态局部变量的比较

Python中的算术运算符都有哪些呢?

R语言 变量

在 R 中比较和连接数据框