Я все еще получаю ошибку lldb
, потому что я, вероятно, получаю доступ к памяти, которой я не должен. Похоже, что я делаю что-то неправильно при манипулировании параметрами в io_seg_sort
, потому что перед вызовом qsort
все еще в порядке.C++ qsort 2D-массив
#define IO_SEG_IMAX (IO_SEG - 1)
static int io_seg_sort (const void * seg1, const void * seg2) {
int * _seg1 = (int *)seg1;
int * _seg2 = (int *)seg2;
cout << _seg1[1] <<endl; // this gives some random values and not what i am expecting
if (_seg1[1] > _seg2[1]) {
return 1;
}
else if (_seg1[1] < _seg2[1]) {
return -1;
}
else {
return 0;
}
}
int **temp = new int *[IO_SEG];
for (int i = 0; i <= IO_SEG_IMAX; i++) {
temp[i] = new int[2];
memcpy(temp[i], inputs[i], sizeof(int) * 2);
}
qsort(temp, IO_SEG, sizeof(int *) , io_seg_sort);
EDIT1: проблема я получаю некоторые случайные значения в io_seg_sort
при вызове cout
вместо того, что я ожидал. inputs[i]
является членом класса int inputs[IO_SEG][2]
;
Почему бы не использовать уровень C++ ** 'std :: sort' ** из' algorithm'? –
Какова связь между IO_SEG и IO_SEG_IMAX? – Moberg
@Moberg это означает IO_SEG_INDEX_MAX – Krab