问题
I have initialize a std::map of a std::map like as below:
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}}}};
And now I am trying to access the float values in the following way:
std::cout<<" the scaling factor is :"<<_ScalingMapFrequency["mHz"]["Hz"];
There is no problem when I compile and run the code but I am expecting to get "1e-3" instead I am always getting a "0". I need to access the std::map "_ScalingMapFrequency" as an array, that being the design decision.
What mistake I am making ? Please give me some pointer and I would greatly appreciate.
回答1:
A map cannot have duplicate keys, thus when you do {"mHz", {{"Hz", 1e-3}}},
for the second time, it overwrites the first one, as opposed to merge them.
You should change the constructor so that they are merged to begin with.
{"mHz", {{"mHz", 1.0}},
{"mHz", {{"Hz", 1e-3}},
Should become
{"mHz", {{"mHz", 1.0},
{"Hz", 1e-3}}},
来源:https://stackoverflow.com/questions/23214788/accessing-a-stdmap-of-stdmap-like-an-array