c++ - 在地图中插入双精度和一对并打印地图
问题描述
我想为分数构建一个容器。键将代表双精度分数的值;分子和分母成对存储。
std::map<double, pair<int, int>> m ();
我在插入和打印元素时遇到了问题。您能告诉我如何针对这种特定情况执行此操作吗?
我试过了:
m.insert(make_pair(x/y, make_pair(x, y)));
给我错误
在“m”中请求成员“插入”,它是非类类型
‘std::map<double, std::pair<int, int> >()’ m.insert(make_pair(x/y, make_pair(x, y)));
for ( auto it1 = m.begin(); it1!=m.end(); ++it1) cout << it1->first << "->" << it1->second << endl;
给
请求非类类型的“m”中的成员“begin”
‘std::map<double, std::pair<int, int> >()’ for ( auto it1 = m.begin(); it1!=m.end(); ++it1)
以及在 geeksforgeeks 和 SO 上显示的许多其他方式给了我同样的错误,但我不知道为什么。
解决方案
您的问题在于 molbdino 所说的:
std::map<double, pair<int, int>> m ();
编译器认为它是一个函数名m
,没有参数,并返回 astd::map<double, pair<int, int>>
这不是你想要的。
所以,删除()
另一件事是x
是一个int
,y
是一个int
,所以x / y
是一个整数除法,将返回一个int
。但是您的地图需要一个double
.
所以你应该把它转换成double
推荐阅读
- javascript - How to refactor a list of buttons to a map function
- mysql - Authentication plugin error while connecting to MySQL database
- ruby-on-rails - Convert pdf file to base64 string
- php - 你能帮我解决我的代码中的错误吗
- python - Tableau 和关系数据库
- python - 子类化多个类时来自 __dict__ 中的实例属性
- javascript - 如何创建不区分大小写的文本搜索
- python - Python - 将数据点插入到 numpy 图像中
- go - 在 Go 中深度复制图结构
- c# - ASP.NET Core:IsInRoleAsync 和 Authorize Attribute 不一致