将值分配给向量(2D)的向量中的特定位置

时间:2018-11-05 03:39:19

标签: c++ arrays vector

好吧,即时通讯开始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;
    }

目前显然不起作用。 (对不起,我的语言不好,英语是我的第二语言...)

1 个答案:

答案 0 :(得分:0)

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

天真的解决方法是简单地将向量预先分配给您期望的尺寸:

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

请注意,您的for循环无论如何都会自然地超调,并且您仍然会得到异常,因为它们实际上循环到10个包含。请记住,如果您有10个元素,则有效索引为0到9(含0和9)。