C++ 方阵;无效类型‘;int[int]&x2019;对于数组下标";输出

C++ 方阵;无效类型‘;int[int]&x2019;对于数组下标";输出,c++,arrays,C++,Arrays,所以,我需要创建一个由用户输入大小的方阵(也填充了随机数)。 我试过这个: #include <iostream> #include <cstdlib> using namespace std; int main(){ int size; cin >> size; int arr[] = {}; for (int i = 0; i < size; i++){ cout << endl; for (int j = 0; j &l

所以,我需要创建一个由用户输入大小的方阵(也填充了随机数)。 我试过这个:

#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int size;
cin >> size;
int arr[] = {};
for (int i = 0; i < size; i++){
    cout << endl;
    for (int j = 0; j < size; j++){
        arr[i][j] = rand() % 10;
        cout << arr[i][j] << ' ';

    }
} 
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
整数大小;
cin>>尺寸;
int arr[]={};
对于(int i=0;i>尺寸;
std::vector arr(大小,std::vector(大小,0));
对于(int i=0;icout首先,您使用的是一维数组,类似于二维数组。这是错误的

假设你能解决这个问题, 如果这是C99而不是C++,可变长度数组实际上是可以的。 你可以通过这样的方式逃脱惩罚

/*
   get input size
*/
int arr[size][size];
<>但是在C++(Un)中幸运的是没有相同的样式的可变长度数组。 <经典的C++中,你必须使用内存分配来创建动态数组,比如在运行时

中确定的大小。
int size;
cin >> size;
int **arr = new int*[size];
for(int i = 0; i < size; i++) {
    arr[i] = new int[size];
}
int大小;
cin>>尺寸;
int**arr=新int*[大小];
对于(int i=0;i
<>但是,在更现代的C++中,通常建议使用向量而不是

vector>arr;

而不是使用
arr[i][j]=rand()%10;
使用
arr[i]。向后推(rand()%10)

或者你可以在填充向量之前
调整大小
。如果你不想在向量中放置占位符垃圾,你也可以使用
保留

或者您可以将
size
传递给向量的构造函数

vector>arr(大小,向量(大小));


不过需要注意的是,对于小矩阵,向量向量的性能明显比普通的旧数组差(我没有亲自测量这些度量,但我已经看到了这方面的可靠度量)

int-arr[]={}
我甚至不确定这是否有效,但请注意索引
arr
将返回一个int,您正在尝试索引int。这无法工作。数组有固定大小。这个数组中有多少int?
int arr[]={}
嗯,int的数量必须由用户输入。因此,我声明了“size”我的建议是实现。如果由于某种原因不允许您使用
std::vector
,请注意链接代码中声明但未实现的复制构造函数和赋值运算符。这就是。
std::vector
为您完成所有这些。
/*
   get input size
*/
int arr[size][size];
int size;
cin >> size;
int **arr = new int*[size];
for(int i = 0; i < size; i++) {
    arr[i] = new int[size];
}