如何在 C++ 中在 int 和 pair 之间制作 unordered_multimap?
Posted
技术标签:
【中文标题】如何在 C++ 中在 int 和 pair 之间制作 unordered_multimap?【英文标题】:How can I make an unordered_multimap in C++ between an int and a pair? 【发布时间】:2017-07-09 18:07:24 【问题描述】:尝试运行以下代码时,出现此编译错误 “错误:‘模板类 std::unordered_multimap’ unordered_multimap m 的模板参数列表中参数 2 的类型/值不匹配;”
有什么方法可以设置多图吗?如果不是,我怎么能做我想做的事?谢谢!
#include <iostream>
#include <algorithm>
#include <string.h>
#include <vector>
#include <map>
#include <unordered_map>
#include <utility>
using namespace std;
int main()
int n = 100;
unordered_multimap<int, pair> m; //Error is in this line
for (int a = 0; a <= n; ++a)
for (int b = 0; b <= n; ++b)
int result = (a*a*a) + (b*b*b);
pair<int,int> p = a,b;
pair<int,pair> p2 = result,p;
m.insert(p2);
return 0;
【问题讨论】:
unordered_multimap< int, pair< int, int > > m;
请注意,pair
是一个模板,需要两个模板参数才能成为可用类型。
在一个 int 和一对...之间是什么?一对不是类型。
【参考方案1】:
std::pair
本身并不是一个类型,它是一个“生成”类型的模板。您需要通过指定它要求的 2 个模板参数类型来指定要“制作”的类型。
您的用例表明您希望将两个整数作为一对,因此您应该在任何地方指定:
unordered_multimap<int, pair<int, int>> m;
和
pair<int,pair<int, int>> p2 = result,p;
【讨论】:
感谢您快速直接的回复! @EduardoDeLaGarza 如果您发现这篇文章回答了您的问题,请接受以上是关于如何在 C++ 中在 int 和 pair 之间制作 unordered_multimap?的主要内容,如果未能解决你的问题,请参考以下文章
C++ priority_queue 当存储pair的默认排序方式