如何访问和打印向量矢量的各个元素?

时间:2016-10-31 08:38:05

标签: c++ vector stl

我尝试构建一个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";
}

3 个答案:

答案 0 :(得分:3)

您忘了初始化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";
}

答案 1 :(得分:0)

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

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]尚未创建。

答案 2 :(得分:0)

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

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";
}

编辑:好的......已经回答,为时已晚; - )