我如何访问和打印向量的向量中的单个元素

How do I access and print individual elements of a vector of vectors?

本文关键字:向量 打印 元素 单个 何访问 访问      更新时间:2023-10-16

我尝试构建一个7*3矩阵,然后打印它的元素,因为它的值被初始化,但不幸的是,程序在运行时终止。如果有更简单、更有效的方法来完成同样的过程,请务必告诉我。

vector< vector<int> >  v1;
for(int i = 0;i < 7;i++)
{
    for(int j = 0;j < 3;j++)
    {
        v1[i].push_back(i + j);
        cout << v1[i][j] << " ";
    }
    cout << "n";
}

您忘记初始化v1

您可以使用以下命令:

std::vector<std::vector<int>> v1(7, std::vector<int>(3));
for (int i = 0; i != 7; ++i) {
    for (int j = 0; j != 3; ++j) {
        v1[i][j] = i + j;
    }
}
// Display
for (const auto& row : v1) {
    for (const auto& e : row) {
        std::cout << e << " ";
    }
    std::cout << "n";
}

在使用v1[x]之前,您需要将空的vector<int>放入v1中:

vector< vector<int> >  v1;
for(int i = 0;i < 7;i++)
{
    v1.push_back(vector<int>());
    for(int j = 0;j < 3;j++)
    {
        v1[i].push_back(i + j);
        cout << v1[i][j] << " ";
    }
    cout << "n";
}

类型vector< vector<int> > v1;不知何故令人困惑,但两个向量具有不同的含义。第一个是定义v1的类型,此时,v1变成一个空向量。与此相反,第二个向量只是意味着v1可以保存的类型。因此,在定义它时,v1已经准备好使用,而v1[x]还没有创建。

是的,你的代码崩溃很明显。
试试这个:

std::vector< std::vector<int> >  v1;
for (int i = 0; i < 7; ++i)
{
    v1.push_back(std::vector<int>());
    for (int j = 0; j < 3; ++j)
    {
        v1[i].push_back(i + j);
        std::cout << v1[i][j] << " ";
    }
    std::cout << "n";
}

编辑:好吧…已经回答了,太迟了;-)