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.5
是 double
类型的文字,而不是 float
。要解决这个问题,只需使用 F 后缀:
kwargs["length"] = 4.5F;
我正在尝试使用 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.5
是 double
类型的文字,而不是 float
。要解决这个问题,只需使用 F 后缀:
kwargs["length"] = 4.5F;