qsort mit VS12



  • Führt das mal mit VS12 aus. Das ist so dumm, ich glaube immer noch es ist mein Fehler. 🤡

    #include <cstdlib>
    #include <algorithm>
    #include <vector>
    #include <random>
    #include <iostream>
    
    int smaller(const void* a, const void* b)
    {
    	return *(int*)a - *(int*)b;
    }
    
    int main()
    {
    	using namespace std;
    	default_random_engine e(12345678);
    
    	vector<int> v(0x10000);
    	generate(v.begin(), v.end(), e);
    	qsort(&v[0], v.size(), sizeof v[0], smaller);
    
    	if (!is_sorted(v.begin(), v.end()))
    		std::cout << "Not sorted!\n";
    	else
    		std::cout << "Sorted!\n";
    }
    


  • return *(int*)a - *(int*)b;
    

    1.) Funktion sollte -1,0,1 zurueckgeben.
    2.) Kann sich um underflow oder overflow error bei Subtraktion handeln.



  • knivil schrieb:

    1.) Funktion sollte -1,0,1 zurueckgeben.

    Ne.

    knivil schrieb:

    2.) Kann sich um underflow oder overflow error bei Subtraktion handeln.

    Das kann sein! Hätte mich schon sehr gewundert.

    Interessant aber, dass es mit GCC funktioniert. Welche schwarze Magie nutzen die denn da?


  • Mod

    cooky451 schrieb:

    Interessant aber, dass es mit GCC funktioniert. Welche schwarze Magie nutzen die denn da?

    e.min()==1, e.max()=2147483646



  • Hmja, ich hatte mit einer uniform_int_distribution probiert, aber die geht auch nur von 0 bis int_max statt von int_min bis int_max. Vielleicht sollte ich erstmal etwas essen. 🤡


Anmelden zum Antworten