打印向量的向量

恩里克阿尔瓦雷斯占位符图像

我正在尝试用 C++ 打印一个二维数组,但我遇到了问题。我按照传统方式vectorName.size()在 for 循环内打印向量所以我遵循的方式是这样的。

#include <stdio.h>
#include <iostream>
#include <vector>
#include <math.h>
#include <time.h>


using namespace std;

void impMat(vector < vector <int> >, vector < vector <int> >);

int main () {
    vector < vector <int> > A;
    vector < vector <int> > B;
    vector <int> temp;

    for(int j = 0; j < 4; j++){
       for(int i = 0; i < 5; i++){
          temp.push_back(i);
       }
       A.push_back(temp);
       B.push_back(temp);
    }

    impMat(A,B);
    cout << endl;
    return 0;
}

void impMat(vector < vector <int> > A,vector < vector <int> > B) 
{
    for(int i = 0; i < A.size(); i++){
       for(int j = 0; j < A[i].size(); j++){
          cout << A[i][j] << " ";
       }
       cout << endl;
    }
    cout << endl;
    for(int i = 0; i < B.size(); i++){
       for(int j = 0; j < B[i].size(); j++){
          cout << B[i][j] << " ";
       }
       cout << endl;
    }
}

但这是打印这样的东西

0 1 2 3 4
0 1 2 3 4 0 1 2 3 4
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4

预期输出

0 1 2 3 4 
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4

我如何才能正确打印我的矢量?

阿空加瓜

问题基本上是你如何填充你的向量:

for(int j = 0; j < 4; j++)
{
     for(int i = 0; i < 5; i++)
     {
          temp.push_back(i);
     }
     A.push_back(temp);
     B.push_back(temp);
     // now temp yet contains all the values entered, so you produce:
     // 0, 1, 2, 3, 4 in first loop run,
     // 0, 1, 2, 3, 4 0, 1, 2, 3, 4 in second,
     // ...
     // most simple fix:
     temp.clear();
}

但是,效率更高,因为您无论如何都希望拥有相同的数据:

for(int i = 0; i < 5; i++)
{
     temp.push_back(i);
}

for(int i = 0; i < 4; i++)
{
     A.push_back(temp);
     B.push_back(temp);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章