C++11 für Visual C++ 2010



  • Hey gibt es eine Möglichkeit den C++ Standard von Visual Studio bzw. Visual C++ zu aktualisieren, ohne gleich die neue Version der Entwicklungsumgebung runterzuladen ??
    Wäre nett wenn wen ich z.b die Schleifenvariable "elem" verwenden könnte.
    Danke im voraus.



  • Nein



  • Was ist das Problem daran, eine Schleifenvariable namens elem zu benutzen? (Ich nehme an du meinst was anderes, aber 😕)



  • Das Problem ist, dass elem erst seit C++ 11 verfügbar ist, somit muss ich den Umständlichen Weg gehen :

    int array[3];
    int loop;

    for(loop = 0; loop > 3; ++loop)
    {
    ...
    }

    Was aber wenn ich anstatt einem Array ein Vector werwenden möchte ( Und ich nicht die Anzahl der Werte weiß, oder Werte hinzufügen möchte ) ??



  • My_Ouzo schrieb:

    Was aber wenn ich anstatt einem Array ein Vector werwenden möchte ( Und ich nicht die Anzahl der Werte weiß, oder Werte hinzufügen möchte ) ??

    Die Anzahl der Werte bekommst du über die size()-Methode, und iterieren kannst du mit Iteratoren.

    Ich bin mir ziemlich sicher, dass du von range-based for sprichst ( for (x : C) { ... } ). Mit irgendwas namens "elem" hat das nichts zu tun. Vielleicht hast du mal ein Beispiel in einem Buch gesehen, wo die Schleifenvariable elem hieß?



  • Mit C++ 11 wurde ja eine zusätzliche for-Syntax eingeführt mit der man Arrays oder Container bequem und sicher durchlaufen kann, Beispiel :

    int werte[10] = {1, 2, 3, 4, 5, 6, 7, ,8 ,9 10};
    
    int summe = 0;
    for(int elem : werte)
    {
        summe += elem;
    }
    


  • My_Ouzo schrieb:

    Mit C++ 11 wurde ja eine zusätzliche for-Syntax eingeführt mit der man Arrays oder Container bequem und sicher durchlaufen kann, Beispiel :

    int werte[10] = {1, 2, 3, 4, 5, 6, 7, ,8 ,9 10};
    
    int summe = 0;
    for(int elem : werte)
    {
        summe += elem;
    }
    

    Ja, das geht aber auch mit wilhelm

    int werte[10] = {1, 2, 3, 4, 5, 6, 7, ,8 ,9 10};
    
    int summe = 0;
    for(int wilhelm : werte)
    {
        summe += wilhelm;
    }
    


  • Ja, vor C++11 musst du halt mehr schreiben.
    Geht aber auch ohne Probleme.



  • wusst ich garnicht dass man anstatt elem auch willhelm schreiben kann 😃 , so stand es zumindest in meinem Buch.
    Trotzdem nice, dass es günstige Alternativen gibt.

    Wenn noch jemand sicher weiß on man C++ 11 in VC++ 2012 verwenden kann, dann wäre ich trotzdem dankbar dafür. Ich benutze halt Win Vista und leider läuft weder VC++ 13 noch 12.



  • Stop das geht auch in MSVC10.

    Erstmal:

    My_Ouzo schrieb:

    Wenn noch jemand sicher weiß on man C++ 11 in VC++ 2012 verwenden kann, dann wäre ich trotzdem dankbar dafür. Ich benutze halt Win Vista und leider läuft weder VC++ 13 noch 12.

    Ja geht.

    So und in Visual Studio 2010 geht das auch, aber die Syntax ist anders:

    std::vector<int> vec;
    
    for each(int x in vec)
    {
        std::cout << x << std::endl;
    }
    

    (bin mir über die genaue Syntax nicht mehr ganz sicher, musst mal probieren)

    Aber das ist kein Standard C++ !!



  • Wieso kannst du nicht einfach VS 2013 verwenden? 2010 is ja bald schon wieder steinalt...



  • dot schrieb:

    Wieso kannst du nicht einfach VS 2013 verwenden? 2010 is ja bald schon wieder steinalt...

    Weil 2013 nicht auf Vista läuft.



  • Dann soller aufrüsten auf Win 7 oder 8 😉
    Vista is genauso alt und wird nichtmals mehr supported von M$



  • Skym0sh0 schrieb:

    Dann soller aufrüsten auf Win 7 oder 8 😉
    Vista is genauso alt und wird nichtmals mehr supported von M$

    Das stimmt so nicht, der Vista-Support wurde verlängert und läuft bis 2017 oder 2018 (ganz sicher bin ich mir jetzt nicht). Dennoch würde auch ich zu einem Systemwechsel raten (7 oder 8.1).



  • Sogar XP wird noch mit Updates versorgt... Noch zwei Monate 😉



  • Skym0sh0 schrieb:

    So und in Visual Studio 2010 geht das auch, aber die Syntax ist anders:

    std::vector<int> vec;
    
    for each(int x in vec)
    {
        std::cout << x << std::endl;
    }
    

    (bin mir über die genaue Syntax nicht mehr ganz sicher, musst mal probieren)

    Das ist IIRC C++/CLI. Macht der Compiler das auch im Native-Modus?



  • Bashar schrieb:

    Macht der Compiler das auch im Native-Modus?

    Ja, for each ist ne /cli -unabhängige Extension.



  • Also erstmal danke für die "for each()" Syntax , ich war heut etwas inaktiv deshalb hab ich eure Beiträge erst jetzt gelesen. Zu Win Vista, natürlich werde ich Vista in der Zukunft mit Win 7 ersetzten,... ein Problem war, dass das Upgrade von Vista auf 7 nicht so funktioniert hat wie es sollte, so muss ich im späteren Win7 nach der Deinstallation von Vista installieren. Ein anderer Punkt ist , dass ich im Besitz einer Notebooks ( Win Vista ) und eines Desktop PCs ( Win 7 ) bin, und der Austausch von Quellcode zu Problemen füren kann wenn dieser nicht nach dem C++ Standard den beide PCs unterstützen geschrieben ist. Trotzdem ist es schön in einem solchen Forum zu sein 🙂 , danke für eure Hilfe.



  • std::vector<int> vec;
    
    BOOST_FOREACH(int x, vec)
    {
        std::cout << x << std::endl;
    }
    


  • std::vector<int> v;
    
    std::for_each(begin(v), end(v), [](int x){
      ...
    ]);
    

Anmelden zum Antworten