我一直在尝试使用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
有人能指出这段代码中的问题,为什么我不能得到一个很好的印刷三角形?
谢谢
答案 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;
}