gpt4 book ai didi

c++ - 数组作为映射键

转载 作者:行者123 更新时间:2023-12-02 19:43:02 24 4
gpt4 key购买 nike

我正在尝试使用数组作为 map 键。我让它工作了,但是当我尝试将它集成到一个类中时,我收到以下编译器错误:

In instantiation of ‘T& Matrix::operator[](std::array) [with T = double]’: 35:12: required from here 20:24: error: no match for call to ‘(std::map, double, std::less >, std::allocator, double> > >) (const std::array&)’ return matrix(index);

这就是我的代码:

#include <map>

template <typename T>
struct Matrix{
std::map<std::array<int,2>,T> matrix;
int rows;
int columns;

Matrix()
: rows(0),
columns(0)
{ }

Matrix(int rows,int columns)
: rows(rows),
columns(columns)
{ }

T& operator[](const std::array<int,2> index){
return matrix(index);
}

T& operator[](const std::array<int,2>& index) const{
return matrix(index);
}

};

int main(int argc, char *argv[])
{
Matrix<double> M(10,10);
double a = 10;
M[{10,11}] = a;


return 0;
}

最佳答案

在这些运算符中

T& operator[](const std::array<int,2> index){
return matrix(index);
}

T& operator[](const std::array<int,2>& index) const{
return matrix(index);
}

您正在尝试调用类模板 std::map 的不存在的运算符函数

matrix(index)

很明显你的意思是在第一个下标运算符中

matrix[index]

T& operator[](const std::array<int,2> &index){
return matrix[index];
}

在第二个下标运算符中,成员函数位于。

const T& operator[](const std::array<int,2>& index) const{
return matrix.at(index);
}

此外,第二个运算符应该使用用限定符 const 限定的返回类型进行声明,即它应该返回一个常量引用,因为成员函数又是一个常量函数。

关于c++ - 数组作为映射键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60056776/

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