提问者:小点点

std::variant的赋值运算符


我试图使用std::variant将一个浮点数赋给我的std::map中的定义值。 我以这种方式初始化了我的映射:

std::map<std::string,std::variant<float,int,bool,std::string> kwargs; 
kwargs["type"] = "linear"; 
kwargs["flag"] = true; 
kwargs["height"] = 5; 
kwargs["length"] = 4.5; 

我正在尝试存档这个操作:

float f = kwargs["length"]; 
float a = f+0.5; 

如何将std::map键转移到一个浮点数中进行简单的算术运算?


共2个答案

匿名用户

要访问该变体,需要使用免费函数std::get:

float f = std::get<float>(kwargs["length"]);

此外,您可能会遇到这一行的问题:

kwargs["length"] = 4.5; 

因为4.5double类型的文本,而不是float。 要解决这个,只需使用F后缀即可:

kwargs["length"] = 4.5F; 

匿名用户

尝试使用std::get,如下所示:

 const float f = std::get<float>(kwargs["length"]);

您可以在这里看到文档:https://en.cppreference.com/W/cpp/utility/variant/get