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;i cout首先,您使用的是一维数组,类似于二维数组。这是错误的
假设你能解决这个问题,
如果这是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];
}