我正在使用內置函數qsort()
來對class item
指針的向量進行排序。使用帶類指針的qsort()
class item {
int value;
vector<char> c;
...
...
};
//Declaration of vector
vector<item*> items;
//Function Call
qsort(&items, items.size(), sizeof(item*), value_sort);
int value_sort(const void* a, const void* b)
{
item* pa = *(item**) a;
item* pb = *(item**) b;
if (pb->value < pa->value)
return 1;
else if (pa->value < pb->value)
return -1;
return 0;
}
在調試程序模式,指針既不pa
也不pb
指向有效的位置。由pa
或pb
指向的class items
的所有數據成員的集合都包含垃圾值。我在哪裏犯錯誤?我也不確定使用雙指針。
謝謝。
你爲什麼使用qsort? – 2011-02-07 19:45:20
你在填充矢量嗎?這將有助於看到該代碼。就像這樣,你似乎在排序一個空矢量。 – 2011-02-07 19:45:24
@Fred:是的,我正在填充矢量。 – ajmartin 2011-02-07 19:56:59