如何使用向量创建一个参差不齐的数组?

时间:2017-03-18 01:59:13

标签: c++ matrix vector

我一直在尝试使用C ++中的矢量创建并打印出一个参差不齐的数组矩阵

#include <iostream>
#include <vector>

typedef std::vector<std::vector<int>> Matrix;

int main ()
{
    Matrix a(10);

    for(int i = 0; i < 10; i++) a[i].resize(i + 1);

    for (int i = 0; i < a.size(); i++)
    {
        for (int j = 0; j < a.size(); j++)
        {
            std::cout << a[i][j];
        }
        std::cout << std::endl;
    }
    return 0;
}

我有点“成功”......

上述代码的输出是:

07143616-12660115513423912300-10982394020134798700
00-1098239402013479870001-109823940134239122
0001-1098239401342391220000
0000-1097584032139471475527143616-428591069134239123
000001917869114-2593786113423912500
000000-916064620134798900
0000000691419256-9160646134239124
00000000-59492295201347988
0000000001684957527
0000000000

我正在寻找这样的三角形输出:

0
00
000
0000
00000
000000
0000000
00000000
000000000
0000000000

有人能指出这段代码中的问题,为什么我不能得到一个很好的印刷三角形?

谢谢

2 个答案:

答案 0 :(得分:0)

你的循环有一个简单的逻辑错误:

for (int i = 0; i < a.size(); i++)
{
    // wrong:
    // for (int j = 0; j < a.size(); j++)

    // should be a[i].size()
    for (int j = 0; j < a[i].size(); j++)
    {
        std::cout << a[i][j];
    }
    std::cout << std::endl;
}

答案 1 :(得分:0)

你非常接近。问题是内循环的限制是错误的,它应该是a[i].size(),而不是a.size()。所以你在较短的向量中访问不存在的元素。

for (int i = 0; i < a.size(); i++)
{
    for (int j = 0; j < a[i].size(); j++)
    {
        std::cout << a[i][j];
    }
    std::cout << std::endl;
}
相关问题