Array über funktionen nutzen



  • Hey Leute ich würde gerne eine Funktion erstellen, der ich einen Index übergebe und diese mir dann 6 Zahlen in eine array knallt, die ich dann über einen zeiger oder so dann benutzen kann.

    weiß leide rnichtmal wie ich anfangen soll 😞

    void getNeighbours( const unsigned long Index, int* n)
    {
    	new neigh[6];
    	int* n;
    	n = neigh;
    
    	// nun will ich neigh füllen und das ganze zurückgeben
    
    }
    

    also hiermit aufrufen und dann die elemente mir rausziehen

    getNeighbours(NodeIndex, irgendwas );
    


  • Wenn das keine aufgabe aus der Uni ist, dann ist nur std::vector zu empfehlen!
    Beispiele und Erklärungen hier:
    http://www.cplusplus.com/reference/stl/vector/

    Wenn du die STL nicht kennst, dann kannst du gleich mal anfangen die gesamte HP zu lesen 😃



  • Wenn du es mit Arrays haben möchtest, wäre das hier eine Möglichkeit:

    #include <iostream>
    
    const int ARR_SIZE = 6;
    
    void getNeighbours(const unsigned long index, int* arr, int size);
    
    int main()
    {
        int *arr = new int[ARR_SIZE];
        getNeighbours(4711, arr, ARR_SIZE);
    
        for(int i = 0; i < ARR_SIZE; i++)
            std::cout << arr[i] << std::endl;
    
        return 0;
    }
    
    void getNeighbours(const unsigned long index, int* arr, int size)
    {
        // das hier ist nur eine Dummy-Implementierung, musst du halt noch ersetzen
        for(int i = 0; i < size; i++)
            arr[i] = index - i;
    }
    


  • _kermit, du hast bereits in diesem kleinen Code ein Memory Leak. Mit der STL (z.B. std::vector ) fallen dieses und viele weitere Probleme weg, du musst auch nicht mehr die Grösse explizit übergeben.



  • Hast du natürlich Recht. Ist mir gerade auf der Couch auch eingefallen 😉

    Also, delete nicht vergessen.


  • Mod

    _kermit schrieb:

    Hast du natürlich Recht. Ist mir gerade auf der Couch auch eingefallen 😉

    Also, delete nicht vergessen.

    Dann zeig mal wo du das delete setzen würdest.



  • danke Leute ich werde es damit mal versuchen.



  • Nexus schrieb:

    du hast bereits in diesem kleinen Code ein Memory Leak.

    Ich finde es gar nicht so verkehrt, Speicher am Ende nicht wieder frei zu geben. Darum kümmert sich der Aufrufer auf einem modernem 32Bit-System. Das Programm kann damit viel schneller beendet werden. Bei Toolchains wie man sie gerne mit den GNU-Tools bastelt, kann dies durchaus im messbaren Bereich liegen.


Anmelden zum Antworten