Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在我给我的二维向量一个第一个值后,控制台关闭_C++_Function_Vector - Fatal编程技术网

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)我为每一行创建列。@LcsxX
mat(lin)
允许您在构造函数中分配
lin
元素。它工作得非常好。只是澄清一下:我需要在mat(lin)中声明初始向量大小,创建行,并在mat[I]中声明。resize(col)我为每一行创建列。@LcsxX
mat(lin)
允许您在构造函数中分配
lin
元素。