【发布时间】:2022-01-14 06:50:22
【问题描述】:
我有以下代码用于创建包含地图数组的结构数组。我的问题是如何向地图添加新值?以及如何将值更新为退出键?
struct Line {
map<int, vector<float>> *con_inf;
float *points_x; // Array
float *points_y; // Array
int points_num;
};
void update_map(int points_length) {
struct Line *line_struct = NULL;
line_struct = (struct Line *)malloc(sizeof(int) *points_length);
for (int line_struct_idx = 0; line_struct_idx < points_length; line_struct_idx++) {
line_struct[line_struct_idx].con_inf = (map<int, vector<float>> *) malloc(sizeof(int) *points_num);
line_struct[line_struct_idx].points_x = (float *) malloc(sizeof(int) *points_num);
line_struct[line_struct_idx].points_y = (float *) malloc(sizeof(int) *points_num);
line_struct[line_struct_idx].points_num = points_num;
}
}
我使用下面的代码来确认密钥退出。不存在则为真
if (line_struct[cur_line_idx].con_inf[cur_point_idx].count(con_line_idx) == 0) {
// add value
} else {
// update value
}
但有时它不起作用。一些明显不存在的东西会得到 False 结果(意味着existint)。当代码要更新值时,我会得到Segmentation fault(core dumped)。
【问题讨论】:
-
已知变量,如 'points_length' 'points_num' 'cur_line_idx' 'cur_point_idx' 'con_line_idx'
-
请提供一个minimal reproducible example,它演示了定义一个填充你的结构和一个“工作”的案例和一个“失败”的案例。
标签: c++ arrays dictionary structure