繁体   English   中英

std::variant 的赋值运算符

[英]Assignment operator for std::variant

我正在尝试使用 std::variant 将浮点数分配给我的 std::map 中的定义值。 我以这种方式初始化了我的 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 键转换为浮点数以进行简单的算术运算?

尝试像这样使用std::get

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

您可以在此处查看文档: https://en.cppreference.com/w/cpp/utility/variant/get

要访问该变体,您需要使用免费的 function std::get

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

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

kwargs["length"] = 4.5; 

由于4.5double类型的文字,而不是float 要解决这个问题,只需使用 F 后缀:

kwargs["length"] = 4.5F; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM