我正嘗試使用qsort對類Entry的向量內的「sth」整數值進行排序。代碼相同如下。但是在應用qsort之後,值也保持不變。當我試圖在cmpfunc2()中打印值時,我發現0 0正在打印。將矢量傳遞給qsort
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Entry{public:
int id;
int sth;
Entry(int,int);
};
Entry::Entry(int a,int b){
id=a;
sth=b;
}
int cmpfunc2 (const void * a, const void * b)
{
cout<<(*(Entry *)a).sth<<" "<<(*(Entry *)b).sth <<endl;
return ((*(Entry*)a).sth - (*(Entry*)b).sth);
}
int main(){
vector<Entry> entries;
entries.push_back(Entry(2,3));
entries.push_back(Entry(21,14));
entries.push_back(Entry(54,12));
qsort(&entries, entries.size(),sizeof(Entry),cmpfunc2);
for(int i=0;i<entries.size();i++)
cout<<entries[i].sth<<endl;
}
&條目是矢量 *。你需要&entries [0] –
grisha
只是好奇,爲什麼使用'qsort'而不是'std :: sort'? – Paul
@ user2451677你應該讓這個答案... –