c++ - shift-array-Elemente nach Links

Ich habe erst seit kurzem C++ und habe Schwierigkeiten beim verschieben von array-Elementen zu entfernen, leer/null-Elemente

char *aBlock;
aBlock = new char[100];

int main(int argc, char **argv)
{
aBlock[20] = 'a'; //fill array with test data.
aBlock[10] = 's';
aBlock[30] = 'd'; //Excepted output: This test data should be shifted to the start of array

//Consider aBlock contains data, with random empty elements
    for(int i=1; i <= aBlock.length(); i++) {
        if(aBlock[i-1] == 0) {
            aBlock[i-1] = aBlock[i];
            aBlock[i] = 0;
        }
    }

    return 0;
}

Bearbeiten:
Fixed-code, Tippfehler & falschen Variablen Namen geändert "==" zu "=".
Es funktioniert immer noch nicht wie erwartet.

  • Ein Hinweis zur Terminologie: ein array kann nicht "leer" - Elementen. In Ihrem Fall scheinen Sie zu wollen, zum entfernen von Elementen mit Wert == 0.
  • Was ist .length() einen Zeiger auf den ersten Platz?
  • Angesichts der oben genannten code, würde ich sagen, eineblockieren[50] leer wie nichts zugewiesen wurde. Was wäre die richtige Terminologie, um zu beschreiben, Ihren Zustand?
  • "Voll". Auch wenn nichts zugeteilt worden war, gibt es Werte in jedem array-position. Wenn Sie wollen, zu zählen, wie viele Werte zugewiesen werden, Sie müssen eine separate count-variable
  • Es hat einen Wert, der == 0, das ist alles. Es ist ein char es, so ist es nicht "leer", und 0 ist ein Gültiger Wert für eine char (in der Regel die wörtliche \0 verwendet wird.)
  • Auch ein wichtiger Hinweis: das array ist null-initialisiert, weil es global ist. Aber wenn es definiert wurden innerhalb von main oder eine andere Funktion, es wäre nicht, so würden Sie brauchen, um zu definieren es wie folgt: aBlock = new char[100]();.
  • Haben Sie schon mal versucht, den code zu kompilieren? Dieses funktioniert überhaupt nicht. Ein Zeiger in C++ nicht über eine length() Mitglied und die variable memBlock wird nie erklärt.
  • Wie erwarten Sie, dass code, der nicht kompiliert zu "arbeiten"?
  • Ich denke was er versucht zu tun ist, verdichten des array, obwohl er durchaus eine lange Wege Weg von funktionierenden code, ja 🙂

InformationsquelleAutor AgentOrange | 2014-03-19
Schreibe einen Kommentar