c++ - 如何将浮点值插入到 C++ 中的映射中?

标签 c++ c++11

我需要将 3 个值插入 std::map<int,std::pair<float,float> > 类型的映射中. 这样 map 的数据就会是{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 种不同的插入值的方法: 方法一:

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

方法二:

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

方法三:

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>&)'

最佳答案

方法二就差不多了。您需要考虑嵌套了一对这一事实。

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>是为了,因为您从未在问题陈述中详细说明。

关于c++ - 如何将浮点值插入到 C++ 中的映射中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28964242/

相关文章:

c++ - 从 C++11 中的多个线程获取值,而无需等待任何给定线程完成执行

c++11 - 有符号、无符号和浮点类型之间的转换如何进行?

c++ - std::error_category 是否可用于动态消息?

c++ - 使用 SHAppBarMessage 移动任务栏

c++ - 使用 OpenGL 绘制三角形

c++ - 是否有更多结构/类以获得更好的命名约定?

c++ - 从文件中获取行并用作正则表达式(正则表达式)

c++ - 匿名命名空间中的变量声明和其他地方的定义

c++ - 是否有类型特征可以立即删除顶级 cv 和引用?

c++ - 下面显示的片段在 Coliru 和 Ideone 中编译,但根据 iso § 8.5 p6 它不应该,或者我错过了什么?