如何在 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&lt; int, pair&lt; int, int &gt; &gt; 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的默认排序方式

C++ 如何通过map中key,得到value值?

使用 swig 类型映射从 c++ 方法返回向量<pair<int,int>> & 到 python 元组列表

C++ pair 和make_pair

C++ pair(对组)用法

C++学习 之pair