선언 한 후 배열의 크기를 초기화하는 중입니다.
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
@ coolest111을 업데이트하고 싶다면 원하는대로 바꾸지 않으시겠습니까? – gsamaras
고마워요 ... 고마워요. 내 실수를 찾았습니다. 변수 H, K를 입력하기 전에 초기화되었습니다. – coolest111