gpt4 book ai didi

c++ - map 的键可以是数组吗? (映射数组错误)

转载 作者:行者123 更新时间:2023-11-30 02:36:26 66 4
gpt4 key购买 nike

我想制作一个以 int[27] 形式的数组作为键的 map ,所以我尝试了以下方法:

#include <map>
using namespace std;
map<int[27] ,int> mapa;
int n[27];
int main(){
mapa[n]++;
}

但是我得到一个错误,是因为数组不能用作映射的键​​类型吗?
在这种情况下我能做什么?如果我使用 vector 而不是数组,它会起作用吗?


这是建议吗?

#include <cstdio>
#include <map>
using namespace std;
map<array<int,27> ,int> mapa;
int n[27];
int main(){
mapa[n]++;
}

这是有效的版本:

#include <cstdio>
#include <map>
#include <array>
using namespace std;
map<array<int,27>, int> mapa;
array<int,27> v;
int main(){
mapa[v]++;
printf("%d\n",mapa[v]);
}

最佳答案

But I get an error, is it because arrays can't be a map?

我认为您实际上是指映射键类型。不,原始数组不能用作键,因为没有为它们声明的固有 less 运算符。

What can I do in this case? Would it work if I used a vector instead of an array?

是的,您可以使用 std::vector<int>作为关键。更好的是std::array<int,27> ,如果您知道它的固定大小为 27。

确切的文档如何std::less()std::array 一起工作可以查到here .

或者,您可以提供自己的比较算法,正如@NathanOliver 所指出的那样。


Is this the suggestion?

#include <cstdio>
#include <map>
using namespace std;
map<array<int,27> ,int> mapa;
int n[27];
int main(){
mapa[n]++;
}

差不多。你需要

std::array<int,27> n;

当然有,没有自动转换。

关于c++ - map 的键可以是数组吗? (映射数组错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32746644/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com