如何在C ++中将浮点值插入到地图中?

时间:2015-03-10 12:53:08

标签: c++ c++11

我需要在std::map<int,std::pair<float,float> >类型的地图中插入3个值。 以便地图的数据为{22 32626.23 53232.63}

std::map<int,std::pair<float,float> > my_MainMap;
std::map<float,float>  myMap1;
int iValue;
float fValue1, fValue2;       

我尝试了3种不同的插入值的方法: 方法1:

myMap1.insert(std::pair<float, float>(fValue1, fValue2));
m_Mainmap.insert(std::pair<int,std::pair<float,float> >(iValue,myMap1 ));

方法2:

m_Mainmap.insert(std::pair<int,std::pair<float,float>>::value_type(iValue,fValue1, fValue2));

方法3:

myMap1.insert(std::pair<float, float>(fValue1, fValue2));
m_Mainmap.insert(std::make_pair(iValue,myMap1 ));

我写的代码没有编译。我哪里错了?

In constructor 'std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&) [with _U1 = int, _U2 = std::map<float, float>, _T1 = const int, _T2 = std::pair<float, float>]':
 error: no matching function for call to 'std::pair<float, float>::pair(const std::map<float, float>&)'

1 个答案:

答案 0 :(得分:2)

方法2几乎就在那里。您需要考虑嵌套一对的事实。

m_Mainmap.insert(std::pair<int, std::pair<float,float>>(i, std::pair<float,float>(fOuterRadius,fInnerRadius)));

或者

m_Mainmap.insert(std::make_pair(i, std::make_pair(fOuterRadius,fInnerRadius)));

只要您知道插入函数和此运算符之间的差异,也请考虑以下内容。 (如果密钥已存在,则插入不会更新值)

m_Mainmap[i] = std::pair<float,float>(fOuterRadius,fInnerRadius);

我不知道你的std::map<float,float>是什么,因为你在问题陈述中没有详细说明。