[C/C++] gebruiken qsort(...)

Pagina: 1
Acties:

  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
Hoe kan ik qsort gebruiken?
ik heb het volgende:

code:
1
2
3
4
5
6
qsort(&searchList, 10, sizeof(int*),compare);

int compare(const void* a, const void* b)
{
    return a-b;
}


maar hierbij geeft hij de volgende error:

leesRecords.cpp(61) : error C2036: 'const void *' : unknown size

regel 61 is de return regel.

iemand een idee waarom dit zo is en vooral wat ik er aan moet/kan doen?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wellicht een idee om als je int*'s compared de parameters ook int*'s te comparen? :z

De template probeert de void* te indexeren, wat niet kan omdat ie niet weet waar het naar wijst.

Professionele website nodig?


  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
curry684 schreef op 21 augustus 2003 @ 10:33:
Wellicht een idee om als je int*'s compared de parameters ook int*'s te comparen? :z

De template probeert de void* te indexeren, wat niet kan omdat ie niet weet waar het naar wijst.
als je bedoelt dat je dat const void* verandert in const int*? dat wil op een of andere manier niet omdat qsort dat niet wil. (tenminste toen ik dat heb geprobeerd deed ie dat niet)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

dexter07051982 schreef op 21 August 2003 @ 10:38:
[...]


als je bedoelt dat je dat const void* verandert in const int*? dat wil op een of andere manier niet omdat qsort dat niet wil. (tenminste toen ik dat heb geprobeerd deed ie dat niet)
Dan zou je ook nog kunnen gaan casten lijkt me.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
werkt niet

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Never mind m'n vorige reply ik zat niet te lezen. Je kunt void*'s niet van mekaar aftrekken, die moet je even allebei casten naar (int). Uitleg kan ik evt. later nog wel typen, nu wat haast ;)

Professionele website nodig?


  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
dat wil wel een beetje maar dan sorteert ie niet de intjes maar de adreswaardes.
als ik normaal een * voor de var zet heb ik de waarde op dat adres maar dat wil die niet.

hij geeft dan de volgende error:
leesRecords.cpp(61) : error C2100: illegal indirection

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Uhm nu wordt het wel erg basic:
C++:
1
2
3
4
int compare(const void* a, const void* b)
{
return *((int*)a) - *((int*)b);
}

Professionele website nodig?


  • Eelis
  • Registratie: Januari 2003
  • Laatst online: 21-02-2015
.

[ Voor 192% gewijzigd door Eelis op 18-02-2015 19:58 ]


  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 11-07 22:38
ik ben er ook al uit:
zo werkt het wel

code:
1
2
3
4
int compare(const void* a, const void* b)
{
    return *(int*)a-*(int*)b;
}

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
dexter07051982 schreef op 21 August 2003 @ 10:31:
code:
1
2
3
4
5
6
qsort(&searchList, 10, sizeof(int*),compare);

int compare(const void* a, const void* b)
{
    return a-b;
}
Als searchList een array is met integers, heb je in de aanroep van qsort twee fouten zitten.

Waarom gebruik je eigenlijk geen std::sort ?

C++:
1
2
3
4
5
6
7
8
9
10
11
int a[ 5 ] = { 1, 10 , 3 , 4 , 10 };

#include <algorithm>
#include <functional>

int main( int argc, char * argv[] )
{
    std::sort( a, a + 5, std::greater<int>());
    std::sort( a, a + 5);
    return 0;
}


[edit]
Oops, vautje

[ Voor 36% gewijzigd door farlane op 21-08-2003 12:52 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1