【发布时间】:2011-06-22 23:28:19
【问题描述】:
我正在使用内置函数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;
}
在调试器模式下,指针pa 和pb 都不指向有效位置。由pa 或pb 指向的class items 的所有数据成员集包含垃圾值。我在哪里犯错?我也不确定双指针的用法。
谢谢。
【问题讨论】:
-
你为什么使用 qsort?
-
你在填充向量吗?查看该代码将有所帮助。实际上,您似乎正在对一个空向量进行排序。
-
@Fred:是的,我正在填充向量。
标签: c++ visual-studio-2010 pointers std qsort