Вектор векторов для создания матрицы
Я пытаюсь взять вход для размеров двумерной матрицы. Затем используйте пользовательский ввод, чтобы заполнить эту матрицу. Способ, которым я пытался это сделать, - это векторы (векторы векторов). Но я сталкивался с некоторыми ошибками всякий раз, когда пытался читать данные и добавлял их в матрицу.
//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];
}
}
Всякий раз, когда я пытаюсь это сделать, он дает мне индекс ошибки вне диапазона. Любой совет?
Ответы
Ответ 1
Как бы то ни было, оба размера вашего вектора равны 0.
Вместо этого инициализируйте вектор следующим образом:
vector<vector<int> > matrix(RR);
for ( int i = 0 ; i < RR ; i++ )
matrix[i].resize(CC);
Это даст вам матрицу размеров RR * CC
со всеми элементами, установленными в 0
.
Ответ 2
Перед доступом к любым элементам вы должны инициализировать вектор векторов до соответствующего размера. Вы можете сделать это следующим образом:
// assumes using std::vector for brevity
vector<vector<int>> matrix(RR, vector<int>(CC));
Это создает вектор векторов CC
размера RR
, заполненных 0
.
Ответ 3
Я не знаком с 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);
}
Ответ 4
попробуй это. т = строка, п = Col
vector< vector<int> > matrix(m,vector<int>(n));
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>matrix[i][j];
}
cout<<endl;
}
cout<<"::matrix::"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<matrix[i][j]<<" ";
}
cout<<endl;
}
Ответ 5
То, что вы инициализировали, является вектором векторов, поэтому вам обязательно нужно включить вектор, который нужно вставить ("Вдавлено" в терминологию векторов) в исходном векторе, который вы назвали матрицей в вашем примере.
Кроме того, вы не можете напрямую вставлять значения в вектор, используя оператор "cin". Используйте переменную, которая принимает входные данные, а затем вставляет их в вектор.
Попробуйте это:
int num;
for(int i=0; i<RR; i++){
vector<int>inter_mat; //Intermediate matrix to help insert(push) contents of whole row at a time
for(int j=0; j<CC; j++){
cin>>num; //Extra variable in helping push our number to vector
vin.push_back(num); //Inserting numbers in a row, one by one
}
v.push_back(vin); //Inserting the whole row at once to original 2D matrix
}