Я пытаюсь создать отсортированный по алфавиту массив объектов из класса, который также содержит другую переменную 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()' на самом деле есть? –
@ πάνταῥεῖ Стандартная библиотечная функция C/C++. – Barmar
Почему бы не использовать контейнер 'std' вместо массива. Затем вы можете использовать 'std :: sort' или использовать контейнер, который постоянно сортирует данные. – Barmar