在二维向量中获取多个输入的问题

以下是用于以3x3 2d整数向量的形式从键盘接收输入n次的代码(n也从键盘输入)。我希望代码在每次迭代后都存储一个新的向量,该向量将进行n次,但它仅存储第一个输入。为了验证这一点,我在每次迭代后将元素打印在矢量的位置(2,1)。我希望它从我输入的新矢量中打印出元素,但它总是仅从第一个矢量中打印出元素。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<vector<int>> test_case{};

    int n;

    cin >> n;

    for(int i{}; i < n; ++i)
    {
        for (int i = 0; i < 3; ++i)
        {
            vector<int> line{};
            for (int i = 0; i < 3; ++i)
            {
                int entry;
                cin >> entry;
                line.push_back(entry);
            }

            test_case.push_back(line);

        }
        cout << "\n" << test_case.at(2).at(1);
    }

    return 0;
}

对于以下输入:

4

1 2 3
4 5 6
7 8 9

4 5 8
7 3 2 
1 6 9 

1 4 7 
2 5 8
3 6 9

7 5 3
6 9 8
4 1 2

给定的输出为:


8
8
8
8

我该如何纠正这个问题?