好吧,即时通讯开始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;
}
目前显然不起作用。 (对不起,我的语言不好,英语是我的第二语言...)
答案 0 :(得分:0)
您的向量没有大小。当您访问向量越界时,您将得到std::range_error
异常。由于您没有处理异常,因此程序会崩溃。
天真的解决方法是简单地将向量预先分配给您期望的尺寸:
vector<vector<string>> grille(10, std::vector<string>(10));
请注意,您的for循环无论如何都会自然地超调,并且您仍然会得到异常,因为它们实际上循环到10个包含。请记住,如果您有10个元素,则有效索引为0到9(含0和9)。