vector



  • Hallo,
    ganz kurze Frage: wie bekomme ich die Größe eines Vectors. Also die Anzahl
    der Elemente im Vector???

    Danke.





  • hm indem du nach der entsprechenden Methode in der Referenz deiner Wahl suchst?
    www.cppreference.com
    www.cplusplus.com/reference



  • Danke!!!



  • Hallo noch einmal,
    ich möchte nicht noch einen Thread aufmachen, da es sich wieder nur um eine
    kleinere Frage handelt: wie soll ich eine Konvertierungsfunktion schreiben,
    die eine beliebig lange Zahl vom Typ hugeInt in long int umwandelt und
    die merkt, wenn die beliebig lange Zahl zu groß ist???

    Das umwandeln würde ich schon schaffen. Aber wie mache ich das, dass ich
    merke ob die Zahl zu groß wird???

    Danke!!! 🙂



  • Indem du mit dem Maximalwert vergleichst.
    Den bekommst du standardkonform mit

    #include <limits>
    long int max = std::numeric_limits<long int>().max();
    


  • Ah ja!!! Hab ja ganz vergessen, dass ich die Vergleichsoperatoren schon überladen habe!!! Danke!!!!!! 🙂



  • Sry nochmal. In meinem C++-Buch steht für die limits folgendes drin:

    #include <climits>
    long int max = LONG_MAX;
    

    Ist meins jetzt veraltet, oder was ist das von dir??? Gibt es für C++ die
    Bibliothek limits, also ohne c???

    (Falls das neuer ist, bitte ich um eine Erklärung. Schaut nach einer Klasse
    mit Funktionen aus, die den Maximalwert usw. zurückgibt)



  • Ja, limits ist ein C++-Header und enthält das Template numeric_limits, welches für alle Standardtypen spezialisiert ist und solche Dinge wie min(), max(), digits usw. anbietet, als Grenzen für die Standardtypen.

    "Neu" ist das übrigens nicht, sondern Bestandteil von ISO C++ '98.

    Die Syntax ist allerdings

    #include <limits>
    
    const long max = std::numeric_limits<long>::max()
    


  • Cool, komisch, das das in meinem Buch nicht drin steht.



  • D schrieb:

    #include <climits>
    

    Ein "c" am Anfang des Headernamens der nicht Teil des eigentlichen Namens (Hier: "limits") ist, deutet darauf, das der Header aus der C Standardbibliothek stammt, und nicht Teil der eigentlichen C++ Standardbibliothek ist.

    2 Vermutungen:
    1. Dein Buch könnte veraltet sein
    2. Die Schreiber haben in dem Fall sich im Header vergriffen

    cu André



  • gaanz vorsichtige Fragen:
    - führt dein "C++-Buch" auch ein simples "C" im namen?
    - kommen im C++-Teil des Buches Funktionen wie printf() vor?
    - wird im C++-Teil des Buches zuerst der Umgang mit const char*, strcpy() und ähnlichem gelehrt an Stelle von std::string?

    Solltest du gerade die letzten beiden Fragen mit einem "ja" beantworten können, dann wird es Zeit, sich ein neues C++-Buch zu besorgen (kein "C/C++-Buch") und das andere je nach Alter an ein Museum ("Guck mal Opa, die kannten damals noch keine Standardbibliothek") oder an den Autor ("Opa, kennst du denn keine Standardbibliothek?") zu schicken...



  • C++ von A bis Z - Das umfassende Handbuch von Jürgen Wolf 1. Auflage (2006)



  • Und dann noch climits verwenden? Ich hab mir mal das Inhaltsverzeichnis des Buches angeschaut, daraus geht schon hervor, dass der Autor zuerst die POD-Typen einführt, dann C-Strings und deren Handhabe beschreibt und erst im vierten Kapitel auf Objektorientierung zu sprechen kommt. Vorher wurden bereits Casts eingeführt (erst C-casts, dann C++-casts) Erst in Kapitel 7 (Nach 5: STL und 6: Exceptions) wird auf szd::string eingegangen. Also wieder eines der Bücher, die während der eigentlichen Lernphase mit const char*s um sich werfen und erst nach Abschluss der Grundlagen (sogar viel später) erwähnen, dass es eine String-Klasse gibt und die ganzen Fehler, die man mit C-Strings in den Wochen davor gemacht hat, hätten vermieden werden können. Traurig.



  • Es ist ein Galileo-Computing-Buch. Was erwartet ihr?


Anmelden zum Antworten