错误:数组下标的类型无效

error: invalid types for array subscripts

本文关键字:类型 无效 下标 数组 错误      更新时间:2023-10-16

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

#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];

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

没有一个操作符来显示矩阵而不必手工编写循环?

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

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

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

不是吗?