Fragen zu Vektoren und Standartausgabe cerr...



  • Hallo,
    habe ein paar Fragen und hoffe, dass ihr mir vllt weiterhelfen könnt...
    Z.B. cerr, weiß dass es oft für Fehlermeldungen verwendet wird z.B. wenn der Dateizugriff mit ofstream oder so fehlschlägt. Aber warum kann ich da nicht einfach cout verwenden?
    Außerdem würde ich gerne wissen, was genau Vektoren und Container sind...
    Probier derzeit ein bisschen was an Templates und da taucht der Begriff öfters auf. Vektor scheint für mich eine Klasse zu sein in der ich Variablen speichere etc., hörte sich für mich irgendwie wie eine Header-Datei an. Und bitte was zur Hölle ist ein Vektor im Bezug auf C++?
    Über die ein oder andere Antwort wäre ich dankbar 🙂
    Gruß,
    Wombi



  • cout und cerr sind deshalb getrennt weil man bei Konsolenproggis (speziell im UNIX-Bereich) oft die Ausgabe an ein anderes Programm weitergeben (pipen) will. Über cerr kann man dann weiterhin Fehlermeldungen ausgeben, die dann nicht an das andere Programm gehen sondern auf dem Bildschirm landen. Manche Plattformen haben sogar noch mehr Ausgabekanäle (BS2000 z.B. fallen mir spontan SYSOUT, SYSERR und SYSLST ein).

    Vektoren sind in C++ betrachtet eigentlich Arrays. Die Klasse vector im Standard hat nur den Vorteil, dass man sich um Speicherverwaltung (reservieren, vergrößern, verkleinern, löschen) nicht kümmern muss. Vector speichert (wie Arrays) gleichartige Objekte, also z.B. eine Menge von int oder eine Menge von class Auto (ohje, das Klischeebeispiel schlechthin :D)

    Container sind der Überbegriff für Objekte die Mengen anderer Objekte speichern, also Vektoren, Arrays, Bäume, Tabellen usw.



  • Okay, danke schonmal für deine Antwort. cerr hab ich soweit verstanden, in einem normalen C++ Programm ist es also weniger bedeutend.

    Und mit Vector kann ich beim laufenden Programm noch weiter Objekte und Variablen etc. hinzufügen ohne, dass ich sie mit malloc() allokieren muss und ohne free(gut, das benutz ich eh nie 😉 ) wieder freigeben brauche? Hab ich das so richtig verstanden?

    Und Container sind also auch so eine Art Feld oder Array das andere ganze Objekte sowie einzelne Arrays, Variablen etc. speichern kann? Können da auch Methoden rein und Konstruktoren und vielleicht auch Operations-Überlagerungen? Und wie lege ich es als Container fest? Einfach wie eine Header-Datei wo ich einfach eine Klasse erstelle und das ganze Zeug was ich in Programmcodes implementieren möchte?

    Über eine Antwort würd ich mich freuen, und danke schonmal für das bisherige...

    👍 🤡 💡 ➡



  • Ja, der Begriff "Container" (zu dem Vector auch zählt) sagt schon viel aus: man kann in dem Container viele Dinge reintun. In C++ halt Objekte drin speichern.

    Schau mal hier: http://www.kharchi.de/cppratgeber2.htm Vielleicht hilft das?


Log in to reply