C++ Segmentation fault core 转储用于简单的向量操作

Ind*_*der 0 c++ vector stdvector

我有以下代码 c++ 代码

#include <vector>
#include <iostream>

using namespace std;

#define for_loop(upper_bound) for (int i=0;i<upper_bound; ++i)

// #define SHOW_VECTOR(vec_in) for(int j=0;j<vec_in.size();j++){ cout << vec_in[j] << " " << endl;};


int main(){
    int dim_1=10;
    int dim_2=3;

    int outer_i;
    // vector variable declared here to have 10 values
    vector<vector<int>>vec_var(dim_1);

    for_loop(dim_1){
        outer_i = i;
        for_loop(dim_2){
            cout << outer_i << " " << i << endl;

            vec_var[outer_i][i]=103;    
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,出现以下错误:

分段错误(核心转储)

Cor*_*mer 6

您需要调整外部和内部向量的大小

vector<vector<int>> vec_var(dim_1, vector<int>(dim_2));
//                                 ^ inner vector default size
Run Code Online (Sandbox Code Playgroud)

否则,如果大小dim_1但所有内部向量都为空,则您有一个外部向量。

顺便说一句,因为我注意到你然后用常量值填充向量,你也可以一步完成所有这些

vector<vector<int>> vec_var(dim_1, vector<int>(dim_2, 103));
//                                                    ^ default of inner vector elements
Run Code Online (Sandbox Code Playgroud)