使用带有类指针的qsort()

ajm*_*tin 4 c++ pointers std visual-studio-2010 qsort

我正在使用内置函数qsort()来对class item指针向量进行排序.

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;
}
Run Code Online (Sandbox Code Playgroud)

在调试器模式下,指针既不指向pa也不pb指向有效位置.由class items指向的所有数据成员集合papb包含垃圾值.我哪里弄错了?我也不确定双指针的用法.

谢谢.

Fre*_*son 6

我同意建议使用的答案std::sort.但是暂时忽略了这一点,我认为你的问题的原因是你传递的是vector对象的地址,而不是向量的内容.试试这个:

//Function Call
qsort(&items[0], items.size(), sizeof(item*), value_sort);
Run Code Online (Sandbox Code Playgroud)

然后在尝试之后,返回并使用std::sort.8V)