Я пытаюсь использовать qsort
из STL для сортировки массива ребер:
struct edge
{
int w,v,weight;
};
по весу. Что я пытаюсь это:
int compare_e(const void *a, const void *b)
{
return ( *(edge *)a->weight - *(edge *)b->weight );
};
Но я получаю:
`const void * 'не является
тип указателя на объект
EDIT:
Хорошо, спасибо, теперь мой код скомпилирован, но сортировка, кажется, не работает на 100% ...
#include <cstdlib>
#include <iostream>
struct edge
{
int w,v,weight;
};
struct edge_ID:edge
{
int id;
};
int compare_e(const void *a, const void *b)
{
return ( ((edge *)a)->weight > ((edge *)b)->weight );
};
int main()
{
using namespace std;
edge *tab = new edge[100];
for(int i = 0; i < 100; i++)
{
tab[i].weight = rand() % 100;
cout << i << " => " << tab[i].weight << endl;
}
qsort(tab, 100, sizeof(edge), compare_e);
cout << "AFTER:" << endl;
for(int i = 0; i < 100; i++)
{
cout << i << " => " << tab[i].weight << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
У меня есть номер в неправильном месте ...