我需要在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>&)'
答案 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>
是什么,因为你在问题陈述中没有详细说明。