【发布时间】:2021-12-16 01:19:42
【问题描述】:
我想为分数构建一个容器。键将代表双精度分数的值;分子和分母成对存储。
std::map<double, pair<int, int>> m ();
我在插入和打印元素时遇到了问题。您能告诉我如何针对这种特定情况执行此操作吗?
我试过了:
m.insert(make_pair(x/y, make_pair(x, y)));
给我错误
在“m”中请求成员“insert”,它是非类类型
‘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 上显示的许多其他方式给了我同样的错误,但我不知道为什么。
【问题讨论】:
-
您在错误的地方寻找问题。
std::map<double, pair<int, int>> m ();声明了一个函数m,它不接受任何参数并返回一个std::map<double, pair<int, int>>- 即编译器告诉你它具有的函数类型。删除()。 (如果您愿意,可以使用{}。)
标签: c++ dictionary printing insert std-pair