将值指定给向量(2D)的向量中的某个位置

Assign a value to a certain position in a vector of a vector (2D)

本文关键字:向量 位置 2D      更新时间:2023-10-16

好的,我开始c++,我想给一个向量的向量中的一个特定位置赋值。我已经用数组(2D(完成了这项工作,但现在想用向量完成。

int main() {
int newLine = 10;
int newColumm = 10;
const string WALL = "u2588";
cout << endl;
string grille[10][10];
for (int j = 0; j < newColumm + 1; j++) {
int i = 0;
grille[i][j] = WALL;
}
for (int j = 0; j < newColumm + 1; j++) {
int i = newLine + 1;
grille[i][j] = WALL;
}

我想对向量做同样的事情。我有:

int main() {
int newLine = 10;
int newColumm = 10;
const string WALL = "u2588";
cout << endl;
//    string grille[10][10];
vector<vector<string>> grille;

for (int j = 0; j < newColumm + 1; j++) {
int i = 0;
grille.at(i).at(j) = WALL;
}
for (int j = 0; j < newColumm + 1; j++) {
int i = newLine + 1;
grille.at(i).at(j) = WALL;
}

目前显然不起作用。(抱歉我的语言不好,英语是我的第二语言…(

您的向量没有大小。当您访问向量越界时,会得到一个std::range_error异常。由于您没有处理异常,因此程序会崩溃。

简单的解决方法是简单地将向量预先分配到您期望的维度:

vector<vector<string>> grille(10, std::vector<string>(10));

注意,你的for循环无论如何都会自然过冲,你仍然会得到一个异常,因为它们实际上循环到了10(包括(。请记住,如果您有10个元素,则有效索引为0到9(包括0到9(。