use*_*000 51 c++ vector matrix
我正在尝试输入2D矩阵的尺寸.然后使用用户输入填写此矩阵.我尝试这样做的方法是通过矢量(矢量矢量).但是每当我尝试读入数据并将其附加到矩阵时,我就遇到了一些错误.
//cin>>CC; cin>>RR; already done
vector<vector<int> > matrix;
for(int i = 0; i<RR; i++)
{
for(int j = 0; j<CC; j++)
{
cout<<"Enter the number for Matrix 1";
cin>>matrix[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试这样做时,它会给我一个超出范围错误的下标.有什么建议?
jua*_*nza 161
在访问任何元素之前,必须将向量向量初始化为适当的大小.你可以这样做:
// assumes using std::vector for brevity
vector<vector<int>> matrix(RR, vector<int>(CC));
Run Code Online (Sandbox Code Playgroud)
这将创建一个RR大小CC向量的向量,填充0.
Luc*_*ore 69
实际上,矢量的两个维度都是0.
相反,将矢量初始化为:
vector<vector<int> > matrix(RR);
for ( int i = 0 ; i < RR ; i++ )
matrix[i].resize(CC);
Run Code Online (Sandbox Code Playgroud)
这将为您RR * CC提供所有元素设置为的维度矩阵0.
Shm*_*dty 10
我不熟悉c ++,但快速查看文档表明这应该有效:
//cin>>CC; cin>>RR; already done
vector<vector<int> > matrix;
for(int i = 0; i<RR; i++)
{
vector<int> myvector;
for(int j = 0; j<CC; j++)
{
int tempVal = 0;
cout<<"Enter the number for Matrix 1";
cin>>tempVal;
myvector.push_back(tempVal);
}
matrix.push_back(myvector);
}
Run Code Online (Sandbox Code Playgroud)