Ich lerne über Zeiger und ein Konzept beunruhigt mich. Ich verstehe, dass wenn Sie einen Zeiger (z. B. "Zeiger1") des Typs INT, der auf ein Array zeigt, dann können Sie dieses Array mit INTS füllen. Wenn Sie ein Mitglied des Arrays adressieren möchten, können Sie den Zeiger verwenden und Sie können pointer1 ++; um durch das Array zu gehen. Das Programm weiß, dass es ein Array von INTs ist, so dass es weiß, dass es in INT-Größenschritten durchlaufen werden muss. Aber was ist, wenn das Array aus Strings besteht, die in der Länge variieren können. Wie weiß es, was zu tun ist, wenn Sie versuchen, mit ++ zu inkrementieren, da jedes Element eine andere Länge hat?Zeigerarithmetik auf String-Arrays, wie geht C++ damit um?
Ähnlich, wenn Sie einen Vektor von Zeichenfolgen erstellen und das reserve-Schlüsselwort verwenden, wie weiß es, wie viel zu reservieren ist, wenn Zeichenfolgen unterschiedliche Längen haben können? Dies ist wahrscheinlich wirklich offensichtlich, aber ich kann es nicht ausarbeiten und es passt nicht in meine aktuelle (wahrscheinlich falsch) Denken auf Zeigern. Danke
+1: gute Erklärung –
Vielen Dank, ich verstehe jetzt. – Columbo
Dies erklärt richtig, warum alle std :: string Objekte die gleiche Größe haben. Aber ich stimme nicht zu, dass "Array von Strings" char * [] bedeutet, während "Vektor von Strings" den Vektor bedeutet. Sie können eine Zeichenkette [] oder einen Vektor haben, wenn Sie also über "Strings" sprechen, müssen Sie (vielleicht aus dem Kontext) klarstellen, was Sie meinen. –