c++中来自cin的2D字符向量



我想要一个可以通过索引访问的正方形2D数组。下面是我的代码:

vector<vector<char>> B;
int SIZE;
cin >> SIZE;
for(int i = 0; i < SIZE; i++){
for(int j = 0; j < SIZE; j++){
cin >> B[i][j];
}

输入的格式为:

3
oox
oxo
xoo

所以它想要一个任意字符大小为x的网格。字符之间不能用空格分隔。

然而,即使我尝试用空格分隔,我的代码在输入第一个字符后也会失败。

我也试过使用push_back()。但是我希望能够访问元素

例如B[0][2]应该给我'x'。我该怎么做呢?

代码中的错误是您没有为2D Vector分配内存,而是直接开始使用。

vector<vector<char>> B;   //HERE YOU DECLARE 2D Vector 
int SIZE;
cin >> SIZE;
for(int i = 0; i < SIZE; i++){
for(int j = 0; j < SIZE; j++){
cin >> B[i][j];   // BUT NO MEMORY ALLOCATED
}

请使用以下方法:

int SIZE;
cin >> SIZE;
vector<vector<char>> B(SIZE,vector<char>(SIZE)); // Here we allocate the memory
for(int i = 0; i < SIZE; i++){
for(int j = 0; j < SIZE; j++){
cin >> B[i][j];
}
}

内存分配步骤是

vector<vector<char>> B(SIZE,vector<char>(SIZE));
在这里,我们创建了一个大小为size的vector对象。";它的每个元素都包含另一个sizesize

的vector"。此外,您应该提供用空格分隔的字符输入:

3
o o x
o x o
x o o

最新更新