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)
当我尝试运行它时,出现以下错误:
分段错误(核心转储)
您需要调整外部和内部向量的大小
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)