在声明它之后,您正在初始化数组的大小!你不能在C++中使用变长数组。请阅读this以了解更多信息。
所以,你应该使用std::vector
,像这样:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int H, W;
cin >> W >> H;
std::vector< std::vector<int> > map;
map.resize(H); // H rows
for(int i = 0; i < H; ++i)
map[i].resize(W); // in every row, create W columns
// thus this is equivalent to a HxD array
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cin >> map[i][j];
}
}
cout << endl;
//Print
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cout << map[i][j] << " ";
}
}
cout << endl;
return 0;
}
您可以用数组做,但你应该使用动态分配的内存,这就需要你给你当解除分配内存完成。下面是它应该怎么走:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int H, W;
cin >> H >> W;
int** map = new int*[H];
for(int i = 0; i < H; ++i)
map[i] = new int[W];
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cin >> map[i][j];
}
}
cout << endl;
//Print
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cout << map[i][j] << " ";
}
}
cout << endl;
// DON'T FORGET TO FREE
for(int i = 0; i < H; ++i) {
delete [] map[i];
}
delete [] map;
return 0;
}
我想用户输入数组的大小,然后输入数组,然后打印 – coolest111 2014-11-04 01:17:18
@ coolest111,已更新,是不是你想要的? – gsamaras 2014-11-04 01:17:43
感谢这工作....确定发现我的错误...初始化之前输入变量H,K – coolest111 2014-11-04 01:21:53