gpt4 book ai didi

c++ - 错误 : invalid types for array subscripts

转载 作者:行者123 更新时间:2023-11-30 02:37:16 25 4
gpt4 key购买 nike

我正在尝试在屏幕上打印矩阵。我的代码:

#include <vector>
#include <algorithm>
#include <cmath>
#include <eigen2/Eigen/Core>

int main() {
std::vector<int> items = {1,2,3,4,5,6,7,8,9,10,11,12,18};

// generate similarity matrix
unsigned int size = items.size();
Eigen::MatrixXd m = Eigen::MatrixXd::Zero(size,size);

for (unsigned int i=0; i < size; i++) {
for (unsigned int j=0; j < size; j++) {
// generate similarity
int d = items[i] - items[j];
int similarity = exp(-d*d / 100);
m(i,j) = similarity;
m(j,i) = similarity;
}
}
for (unsigned int i=0; i < size; i++) {
for (unsigned int j=0; j < size; j++) {
std::cout << m[i][j];
}
std::cout << std::endl;
}
return 0;
}

当我编译时我得到了这个:

pex.cpp: In function ‘int main()’:
pex.cpp:25:31: error: invalid types ‘Eigen::ei_traits<Eigen::Matrix<double, 10000, 10000> >::Scalar {aka double}[unsigned int]’ for array subscript
std::cout << m[i][j];

为什么我这里有无效的类型?或者有没有其他方法可以在屏幕上打印内容?我的代码将来会更大,所以我想检查每一步的计算。

最佳答案

没有an operator无需手动编写循环即可显示矩阵?

std::cout << m << std::endl;

否则,您可能希望调用 operator() 而不是 operator[]:

std::cout << m(i, j);

不是吗?

关于c++ - 错误 : invalid types for array subscripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829214/

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