Array sizeof()



  • Hat volkard doch schon gepostet.



  • Ich hatte einen Fehler im Code, der ihn unlesbar machte. Jetzt gehts.



  • Ah, verstehe.

    Dankeschön 😃



  • Hab nochmals ne Frage, das etwa ins gleiche geht...

    Ich möchte checken ob mein Array ein Element enthält, mit einem Vector würde ich das mit "binary_search()" machen.

    Hab schon gegooglet, aber nicht herausgefunden, wie ich das mit nem Array machen kann.



  • Auch mit binary_search.



  • Bashar schrieb:

    Auch mit binary_search.

    Das gibt aber nen compiler error, der ziemlich lang ist o_O

    int test[3] = {1, 2, 3};
    if (binary_search(test[0], test[2], 2)) {
      cout << "true" << endl;
    }
    else {
      cout << "false" << endl;
    }
    

    Auch mit test.begin() und test.end() gings nicht :o



  • Du musst natürlich Iteratoren übergeben, beim Vektor übergibst du ja auch nicht die Elemente:

    binary_search(test, test + sizeof(test)/sizeof(test[0]), 2)
    


  • bzw.

    binary_search(&test[0], &test[3], 2)
    


  • Um deine wahrscheinlich nächste Frage auch gleich zu beantworten: Wenn du Arrays an Funktionen übergibst (als Zeiger auf das erste Element), geht die Grösseninformation verloren und sizeof bringt dir nichts mehr. Gib in einem solchen Fall die Grösse als separaten Parameter mit, oder verwende - dazu würde ich dir ohnehin raten - gleich STL-Container. Wenn du die Dynamik nicht brauchst, wirf doch mal einen Blick auf std::tr1::array (bzw. boost::array ). Das ist sicherer und komfortabler als ein rohes Array, aber nicht langsamer.

    Für Algorithmen wie std::binary_search ist www.cplusplus.com eine gute Referenz, dort sind meist entsprechende Anwendungsbeispiele zu finden.



  • Nexus schrieb:

    Um deine wahrscheinlich nächste Frage auch gleich zu beantworten: Wenn du Arrays an Funktionen übergibst (als Zeiger auf das erste Element), geht die Grösseninformation verloren und sizeof bringt dir nichts mehr. Gib in einem solchen Fall die Grösse als separaten Parameter mit, oder verwende - dazu würde ich dir ohnehin raten - gleich STL-Container. Wenn du die Dynamik nicht brauchst, wirf doch mal einen Blick auf std::tr1::array (bzw. boost::array ). Das ist sicherer und komfortabler als ein rohes Array, aber nicht langsamer.

    Für Algorithmen wie std::binary_search ist www.cplusplus.com eine gute Referenz, dort sind meist entsprechende Anwendungsbeispiele zu finden.

    Super Referenz, danke!


Anmelden zum Antworten