好的,我开始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(。