C++ 在我给我的二维向量一个第一个值后,控制台关闭
我创建了二维向量函数,它应该填充一个向量,返回到我的主函数,但是在我尝试插入第一个值之后,控制台停止获取新值,只结束C++ 在我给我的二维向量一个第一个值后,控制台关闭,c++,function,vector,C++,Function,Vector,我创建了二维向量函数,它应该填充一个向量,返回到我的主函数,但是在我尝试插入第一个值之后,控制台停止获取新值,只结束 #include <iostream> #include <vector> std::vector <std::vector <int>> fill(int lin, int col) { int val; std::vector <std::vector<int>> mat; fo
#include <iostream>
#include <vector>
std::vector <std::vector <int>> fill(int lin, int col) {
int val;
std::vector <std::vector<int>> mat;
for (int i = 0; i < lin; i++) {
for (int j = 0; j < col; j++) {
std::cin >> val;
mat[i][j] = val;
}
}
return mat;
}
void size(int &lin, int &col) {
std::cout << "Quantidade de linhas: ";
std::cin >> lin;
std::cout << "Quantidade de colunas: ";
std::cin >> col;
}
int main() {
int opc, lin, col;
std::vector <std::vector<int>> matA;
std::vector <std::vector<int>> matB;
std::cout << "1. Soma\n2. Subtracao\n3. Multiplicacao\n4. Divisao\n >";
std::cin >> opc;
switch (opc) {
case 1:
//soma
size(lin, col);
matA = fill(lin, col);
matB = fill(lin, col);
}
}
#包括
#包括
标准::矢量填充(整型林,整型列){
int-val;
std::向量矩阵;
for(int i=0;i>val;
mat[i][j]=val;
}
}
返回垫;
}
空隙大小(内部和内部、内部和内部){
std::cout>lin;
标准:cout>col;
}
int main(){
林,林,col;
std::向量matA;
std::向量matB;
std::cout>opc;
交换机(opc){
案例1:
//躯体
大小(林,col);
matA=填充(林,柱);
matB=填充(lin,col);
}
}
您需要调整向量的大小(实际上,您需要调整外部向量和每个内部向量的大小)。请参见第3行和第6行中的更改:
std::vector <std::vector <int>> fill(int lin, int col) {
int val;
std::vector <std::vector<int>> mat(lin);
for (int i = 0; i < lin; i++) {
mat[i].resize(col);
for (int j = 0; j < col; j++) {
std::cin >> val;
mat[i][j] = val;
}
}
return mat;
}
std::向量填充(int-lin,int-col){
int-val;
std::向量mat(lin);
for(int i=0;i>val;
mat[i][j]=val;
}
}
返回垫;
}
您需要调整向量的大小(实际上,您需要调整外部向量和每个内部向量的大小)。请参见第3行和第6行中的更改:
std::vector <std::vector <int>> fill(int lin, int col) {
int val;
std::vector <std::vector<int>> mat(lin);
for (int i = 0; i < lin; i++) {
mat[i].resize(col);
for (int j = 0; j < col; j++) {
std::cin >> val;
mat[i][j] = val;
}
}
return mat;
}
std::向量填充(int-lin,int-col){
int-val;
std::向量mat(lin);
for(int i=0;i>val;
mat[i][j]=val;
}
}
返回垫;
}
mat[i][j]=val代码>这与您认为的不一样。我认为您需要根据lin
和col
调整向量的大小。在其当前状态下,向量大小是(0,0)
。使用at()
而不是操作符[]
进行元素访问,这一点很明显。为什么使用向量的而不是boost::matrix
?mat[i][j]=val代码>这与您认为的不一样。我认为您需要根据lin
和col
调整向量的大小。在当前状态下,向量大小是(0,0)
。使用at()
而不是操作符[]
进行元素访问,这一点很明显。为什么使用向量的而不是boost::matrix
?它工作得很好。只是澄清一下:我需要在mat(lin)中声明初始向量大小,创建行,并在mat[I]中声明。resize(col)我为每一行创建列。@LcsxXmat(lin)
允许您在构造函数中分配lin
元素。它工作得非常好。只是澄清一下:我需要在mat(lin)中声明初始向量大小,创建行,并在mat[I]中声明。resize(col)我为每一行创建列。@LcsxXmat(lin)
允许您在构造函数中分配lin
元素。