我試圖從一個包含另一個int變量的類中按字母順序排序對象數組,但是我無法正常工作qsort函數。 這是我的代碼:在C++中對對象數組排序
#include <iostream>
#include <stdlib.h>
#include <string.h>
int cmp (char **str1 , char **str2)
{
return strcmp(*str1,*str2);
}
class myclass
{
int id;
char text[50];
public:
void add(char a[], int i) { strcpy(text,a); id=i; }
void show(void) { std::cout<<text<<std::endl; }
};
int main (void)
{
myclass * myobject[4];
myobject[0] = new myclass;
myobject[1] = new myclass;
myobject[2] = new myclass;
myobject[3] = new myclass;
myobject[0]->add("zoom",1);
myobject[1]->add("zoo",2);
myobject[2]->add("animal",3);
myobject[3]->add("bull",4);
qsort (myobject,4,sizeof(char *), (int (*)(const void *, const void *)) cmp);
for (int i=0; i < 4; i++)
myobject[i]->show();
return 0;
}
而'qsort()'實際上是? – 2015-01-31 18:11:36
@πάνταῥεῖ一個標準的C/C++庫函數。 – Barmar 2015-01-31 18:12:15
爲什麼不使用'std'容器而不是數組。然後你可以使用'std :: sort',或者使用一個容器來保持數據一直排序。 – Barmar 2015-01-31 18:13:12