我试图使用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
:
float f = std::get<float>(kwargs["length"]);
此外,您可能会遇到这一行的问题:
kwargs["length"] = 4.5;
因为4.5
是double
类型的文本,而不是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