Array von Pointern auf int



  • Der Title sagt schon alles: Ich möchte ein Array von int*.
    Ich habe schon

    int* array[] = new int*[100];
    

    probiert, aber leider habe ich wohl einen Denkfehler. Wie muss es richtig heißen?

    Außerdem würde ich gerne alle Pointer,wie man das so macht mit 0 initialisieren.

    Dafür fallen mir spontan memset/fill/fill_n ein. Da ich aber keinen Umweg über Iteratoren machen möchte würde ich gerne memset nehmen. Wie geht das in diesem Fall hier?



  • Erstens: Wenn du ein Array dynamisch anlegen willst, mußt du dessen Adresse in einem Pointer speichern:

    int** data = new data*[100];
    for (int i=0;i<100) data[i]=...;
    

    Zweitens: fill und fill_n funktionieren auch mit Pointern - also kannst du dir eins von den folgenden aussuchen:

    memset(data,0,100*sizeof(int*));//memset arbeitet auf BYTE's, deshalb sizeof(...)
    
    fill(data,data+100,NULL);
    fill_n(data,100,NULL);  //fill arbeitet auf typisierten Objekten, also brauchst du die Anzahl
    


  • Vielen Danke, der Beitrag hat mir sehr geholfen.
    Welche der Lösungen ist wohl am schnellsten?


Log in to reply