gpt4 book ai didi

c++ - 当类包含二维数组时,如何将类用作 map 的键?

转载 作者:行者123 更新时间:2023-11-30 03:28:18 25 4
gpt4 key购买 nike

我有一个如下所示的类:

class A{
private:
int *a[10];
};

现在我想要一个 map ,其中将提到的类作为键。

map<A,int> visited;

如何在这里重载 less 运算符/编写一个比较函数,以便 map 可以识别重复的二维数组?我在类里面写了一个重载器。但是,它将包含重复数组的对象视为不同的对象。这是我写的函数:

bool operator<(const A& other) const{
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(a[i][j]!=other.a[i][j])return true;
}
}
return false;
}

我找不到代码中的问题。有人可以帮忙吗?

最佳答案

bool operator<(const A& other) const{
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(a[i][j]==other.a[i][j]) continue;
return a[i][j]<other.a[i][j];
}
}
return false;
}

这应该适用于 map 。但如果数组很大,它可能会很慢。考虑编写哈希函数并使用 unordered_map。

关于c++ - 当类包含二维数组时,如何将类用作 map 的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706864/

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