我正在尝试用 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] 删除。
我来说两句