C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?

Posted

技术标签:

【中文标题】C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?【英文标题】:What does C++ mean by "expression must have pointer-to-object type" and "subscript requires array or pointer type"?C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是什么意思? 【发布时间】:2020-03-22 14:02:36 【问题描述】:

我开始编写一个函数,它接受一个大小为 x 大小的二维向量,并返回它顺时针旋转 90 度后的样子的副本。我来了:

std::vector<int> rotate90(std::vector<int> orig, int size) 
    std::vector<std::vector<int>> r;
    r.resize(size);
    for (int i = 0; i < size; i++) 
       r[i].resize(size);
       for (int j = 0; j < size; j++) 
          r[i][j] = orig[size - j - 1][i];
       
    
  

但是,它说最后一行有问题:“表达式必须具有指向对象的类型”和“下标需要数组或指针类型”。我对使用 C++ 很陌生,所以我查找了一些关于使用带有向量的指针的东西,但我仍然不确定如何以一种可以在这里工作的方式实现它们。

【问题讨论】:

这可能不是有史以来最清晰或最有趣的问题。但是,关闭题外话对我来说感觉不对。 OP 对他的功能接收到什么感到困惑。我们可以澄清一下。或者,在非常接近时它重复,或者其他东西,而不是 OT。 【参考方案1】:

问题在于orig 不是二维向量。

std::vector<int> orig

是一维向量,所以

orig[size - j - 1][i]

无法编译。

【讨论】:

以上是关于C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

json 和 数组的区别

C语言指针,下标,

shell数组和awk数组

C和指针之结构体和联合体

C语言第6章 利用数组处理批量数据

ZZNUOJ_用C语言编写程序实现1158:矩阵的最大值(指针专题)(附完整源码)