错误:数组下标的类型无效
error: invalid types for array subscripts
我正在尝试在屏幕上打印矩阵。我的代码:
#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);
不是吗?
相关文章:
- 具有引用返回类型的重写方法上的协变返回类型无效
- 使用 std::future 的不完整类型无效使用
- 类指针和类指针指向二进制运算符+的类型无效的操作数
- 静态类模板成员:将"sizeof"应用于不完整类型无效
- 数组的类型无效
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 错误:数组下标'double*[double]'的类型无效
- 数组下标错误的类型无效
- 协变返回类型无效的转换错误
- 在代码块错误中收到此错误:数组下标'main()::fields[int]'的类型无效
- 3 错误:错误:未在此范围内声明'Entry'。错误:模板参数 1 无效。错误:令牌之前声明中的类型无效'('
- 类成员数组的实现:数组下标的类型无效
- 别名模板、部分专用化和无效参数类型无效
- 数组下标'int [5][float]'的类型无效
- 数组下标的类型无效
- 是否存在对类型名称有效但对基本类型无效的语言构造
- 编译错误 - 数组下标'char[int]'的类型无效
- 使用指向结构数组的指针的参数类型无效
- 使用类模板初始化下标重载函数中的引用类型无效
- 对模板和decltype使用不完整类型无效