我初始化了一个std :: map的std :: map,如下所示:
static std::map<std::string, std::map<std::string, float>> _ScalingMapFrequency = {
{"mHz", {{"mHz", 1.0}}},
{"mHz", {{"Hz", 1e-3}}},
{"Hz", {{"mHz", 1e+3}}},
{"Hz", {{"Hz", 1.0}}}};
现在我试图通过以下方式访问浮点值:
std::cout<<" the scaling factor is :"<<_ScalingMapFrequency["mHz"]["Hz"];
编译和运行代码时没有问题,但我希望得到&#34; 1e-3&#34;相反,我总是得到一个&#34; 0&#34;。我需要访问std :: map&#34; _ScalingMapFrequency&#34;作为一个数组,这是设计决策。
我犯了什么错误?请给我一些指针,我将不胜感激。
答案 0 :(得分:4)
地图不能有重复的键,因此当您第二次执行{"mHz", {{"Hz", 1e-3}}},
时,它会覆盖第一个,而不是合并它们。
您应该更改构造函数,以便合并它们。
{"mHz", {{"mHz", 1.0}},
{"mHz", {{"Hz", 1e-3}},
应该成为
{"mHz", {{"mHz", 1.0},
{"Hz", 1e-3}}},