std::variant 的赋值运算符

Assignment operator for 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 键转换为浮点数以进行简单的算术运算?

尝试像这样使用 std::get

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

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

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

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

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

kwargs["length"] = 4.5; 

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

kwargs["length"] = 4.5F;