简单vector问题
写了一个转置矩阵,用vector动态申请二维数组,应该是vector用法不对。找了很多资料都没有找到
代码如下:
#include<iostream>
#include<vector>
using namespace std;
void change(int m,int n,int *a)
{
vector<int>brr(n)(m);
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
brr[j][i]=a[i][j];
}
}
cout<<"转置后的矩阵为:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<brr[i][j];
}
}
}
int main()
{
int m,n;
cout<<"请输入矩阵的行数"<<endl;
cin>>m;
cout<<"请输入矩阵的列数"<<endl;
cin>>n;
vector<int>arr(m)(n);
cout<<"请输入矩阵"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cin>>arr[i][j];
}
}
change(m,n,&arr[0][0]);
return 0;
}
[解决办法]
vector<int>arr(m)(n); 错了
vector<vector<int> >
[解决办法]
你写了些什么啊 要用迭代器 !!
vector<int> brr(n)(m); 哪有这种写法的?你是想用它表示二维数组的话,应该这么写:
vector<int> brr1(m);
vector<vector<int> >brr2(n);
vector<vector<int> >::iterator it2=brr2.begin();
for(;it2!=brr2.end();it2++)
{
*it2=brr1;
}
这么一道题 你为什么偏偏要用容器?用二维数组即可
[解决办法]
#include<iostream>#include<vector>using namespace std;void change(int m,int n, vector< vector<int> > &a){vector< vector<int> > brr(n);int i,j;for(i=0;i<m;i++){for(j=0;j<n;j++){brr[j].push_back(a[i][j]);}}cout<<"转置后的矩阵为:"<<endl;for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<brr[i][j]<<" ";}cout<<endl;}}int main(){ int m,n; cout<<"请输入矩阵的行数"<<endl; cin>>m; cout<<"请输入矩阵的列数"<<endl; cin>>n; vector< vector<int> > arr(m); cout<<"请输入矩阵"<<endl; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { int num; cin>>num; arr[i].push_back(num); } } change(m,n, arr); return 0;}