foreach im C ++ int-Array

7

Ich bin neu in C ++ und schreibe den folgenden Code. Ich musste über alle Addons in meiner Aufruffunktion iterieren - testFunction . Ich weiß, das funktioniert in C #, aber dieser Code funktioniert nicht. Kann mir jemand bitte den richtigen Weg weisen, es in C ++ zu machen?

%Vor%

Ich habe versucht, Vektor wie unten Vorschläge von euch zu implementieren

%Vor%     
junni lomo 15.01.2013, 13:19
quelle

5 Antworten

14

Ein Array (ein unformatiertes Array) zerfällt in einen Zeiger, wenn es als Argument für eine Funktion übergeben wird, so dass Ihr Array keine Größeninformationen enthält.

Sie müssen die Länge des Arrays explizit in die Funktion eingeben, um sie in der Funktion zu kennen.

Alternativ und besser, verwenden Sie std::vector und dann haben Sie die .size() immer verfügbar, wenn sie benötigt werden.

    
Tony The Lion 15.01.2013, 13:21
quelle
7

Abgesehen von der Verwendung von Vektoren, wie Tony es vorschlägt, können Sie Vorlagen verwenden und das Array als Referenz übergeben, damit der Compiler die Größe des Arrays ableitet:

%Vor%     
Armen Tsirunyan 15.01.2013 13:25
quelle
2

Wenn Sie std::vector oder std::array verwenden würden, könnten Sie std::foreach ,

verwenden %Vor%     
Alex Chamberlain 15.01.2013 13:41
quelle
2

Sie verwenden Konzepte von C # in C ++, aber selbst wenn wir annehmen, dass beide Sprachen ähnlich sind, sind sie nicht gleich.

Die Syntax für eine Entfernungsangabe in C ++ lautet die folgenden :

%Vor%

Sie können dies für flavour verwenden, wenn Sie einen C ++ 11-Compiler .

Übrigens scheint es, dass Sie Eigenschaften für Ihren Code verwenden:

%Vor%

In C ++ gibt es so etwas nicht. Wenn Sie eine Objektmethode aufrufen wollen, müssen Sie sie als Funktion aufrufen:

%Vor%

Aber die addons Variable ist kein Objekt, ist ein Array (sehen Sie sich dieses Tutorial ), so dass es keine Methode oder Eigenschaft namens length ; Wenn Sie ihre Länge kennen müssen, um sie zu iterieren, können Sie in einigen Kontexten den Operator sizeof verwenden (weitere Informationen finden Sie im Lernprogramm).

Nehmen wir an, dass addons ein Container wäre:

%Vor%

Wenn Sie es mit dem C ++ 11-Bereich für iterieren möchten, können Sie es wie folgt schreiben:

%Vor%

Ich hoffe, es hilft.

    
Paula_plus_plus 15.01.2013 14:20
quelle
1

Code arbeitet mit diesem

für (int i = 0; i & lt; (end (Feld) - Anfang (Feld)); i ++)

Gebe maximale Größe zurück

Testen Sie, ob das Array leer ist

%Vor%

Element des Arrays

%Vor%

Arraygröße

%Vor%     
Vivek Malik 28.08.2014 18:45
quelle

Tags und Links