簡體   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