foreach in C++ int-array

Ich bin neu in C++ und ich Schreibe den folgenden code.
Ich brauchte für die Iteration über alle addons in meinem aufrufenden Funktion - testFunction. Ich weiß, das funktioniert in C#, aber dieser code funktioniert nicht. Kann mir jemand bitte darauf, den richtigen Weg, es zu tun in C++?

#include "stdafx.h"
#include <iostream>
#include "resource.h"

int testFunction(char* tester);
int _tmain()
{
    int mainProd=2;
    int Addons[]={7,8,9,10};

    testFunction(mainProd,Addons);


}
void testFunction(int mainProd,int addons[])
{
    for(int x = 0 ; addons.length;++x) ---- Not working 
    {
        std::cout<< addons[x];
    }
}

Habe ich versucht zu implementieren, Vektor, wie unten Vorschläge von Euch

#include "stdafx.h"
#include <iostream>
#include "resource.h"
#include <vector>

void testFunction(std::vector<int> addons);

int _tmain(int argc, _TCHAR* argv[])
{

    std::vector<int>  Addons ;
    for(int i = 0 ;i<10;++i)
    {
        Addons.push_back(i);
    }
     testFunction(Addons);
}

void testFunction(std::vector<int> addons)
{
    for(int i =0 ; i<addons.size();++i)
    {
        std::cout<<addons.at(i);
    }
}
  • Wo hast du die Idee, dass .length funktionieren würde? Vielleicht müssen Sie wählen ein besseres Buch?
  • Was macht Ihre Lieblings-C++ - Buch sagen?
  • fordward deklarieren Sie die richtige version von testFunction zu.
  • pass-by-reference das Vektor, um zu vermeiden, unnötige Exemplaren void testFunction(const std::vector<int> &addons) // note the 'const' and the '&'
  • for(int i =0 ; i<addons.size();++i) ist schlechter Stil für die Iteration über einen Vektor. Verwenden begin und end statt.
  • ist schlechter Stil, dieses argument hat nie mich überzeugt. Gibt es ein besseres für diesen Fall (wenn wir uns nicht in Betracht, um ein anderes enthalten als std::vector)? Beachten Sie, dass C++11 nicht entfernt mit begin und end bei Verwendung der range-Schleife for(auto i:addons).
  • C++11 nicht tun, Weg mit ihm; ich denke, die reichen-für die ist schrecklich. Es ist leicht effizienteren Verwendung von Iteratoren, die direkt für Vektoren, und wesentlich effizienter für andere Behälter. Insgesamt aber, ist es konsistent. Können Sie rip out your std::vector und verwenden Sie eine std::list oder std::set und code haben, der immer noch funktioniert.
  • Ja, ich weiß, dieses argument (wie angedeutet in meinem letzten Kommentar), es ist viel besser, als schlechter Stil. Btw, ich habe nicht gesagt, C++11 nicht entfernt mit begin und end -- Lesen Sie meinen Kommentar sorgfältig durch!
  • Da man sich mit C++11, können Sie Ihre vector mit Liste der Initialisierung: std::vector<int> Addons = {7,8,9,10};

InformationsquelleAutor junni lomo | 2013-01-15
Schreibe einen Kommentar