首页 > 解决方案 > 在地图中插入双精度和一对并打印地图

问题描述

我想为分数构建一个容器。键将代表双精度分数的值;分子和分母成对存储。

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 上显示的许多其他方式给了我同样的错误,但我不知道为什么。

标签: c++dictionaryprintinginsertstd-pair

解决方案


您的问题在于 molbdino 所说的:

std::map<double, pair<int, int>>  m ();   

编译器认为它是一个函数名m,没有参数,并返回 astd::map<double, pair<int, int>>这不是你想要的。

所以,删除()

另一件事是x是一个inty是一个int,所以x / y是一个整数除法,将返回一个int。但是您的地图需要一个double.

所以你应该把它转换成double


推荐阅读