求解关于vector<vector<> >问题?
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
main()
{
int n,i,j,k; //i,j,k为计数器,n为方格的行数或是列数
printf( "Input: ");scanf ( "%d ",&n);
vector <vector <int> > p(n,vector <int> (n));
for (i=0;i <n;++i)
{
for (j=0;j <n;++j)
{
p[i][j]=0;
}
}
do{
printf( "> ");scanf( "%d %d %d ",&i,&j,&k);
p[i][j]=k;
} while(i!=0 || j!=0 || k!=0);
for (i=0;i <n;i++)
{
for (j=0;j <n;++j)
{
printf( "%3d ",pa[i][j]);
}
printf( "\n ");
}
}
当我输入:
5
2 2 8
0 0 4
0 0 0
结果为什么输出时p[2][2]由0变为8,而p[0][0]却还是0啊?
还有就是有没有简洁的方法来初始化p啊?
小弟先谢各位大哥啦
[解决办法]
根据你的赋值过程,应该是这样的:p[2][2]=8;p[0][0]=4;p[0][0]=0;
这时候,P[2][2]当然是8,p[0][0]也自然是0了。
简单一些的方法就要多查查vector的成员函数了,比如assign,operator = 都可以了,
还可以使用泛型算法。