templates



  • Hallo bin neu hier,

    also ich habe folgendes problem. Ich muss verschiedene Datentypen in einem vector einlesen und ich weiß nicht wie ich das template gestalten muss das ich über cin verschiedene datentypen einlesen kann

    void main(){

    int wert = 0; // hier sollen int float double und usigned eingelesen werden
    cin<<wert; // kann aber ja nur int eingelesen werden
    cout>>wert;

    }

    um das ganze sind noch schleifen die alles in den vector packen und habe erstmal alles programiert nur mit int, jetzt muss ich es halt noch datentyp unabhängig machen würde mich freuen wenn mir einer helfen könnte.

    2te Frage wäre, wie ich "template vector " erstellen kann auch im vector habe ich bei der deklaration int als datentyp.

    Hoffe ihr könnt mir weiter helfen

    Liebe grüße



    1. bitte benutzedie cpp-Tags, um den Code leserlicher zu gestalten.
    2. wenn ich das richtig verstehe, willst du Zahlen verschiedenen Typs in den selben vector packen. Das geht nicht, ein vector kann jeweils nur einen Typ von Elementen beinhalten.
    3. void main() ist kein gültiges C++. main hat in C++ schon immer den Rückgabetyp int, in C war das vielleicht vor 20 Jahren mal anders (weiß ich nicht genau), jetzt ist void main aber auf jeden Fall schlichtweg falsch.
    4. Deine zweite Frage versteh ich nicht ganz. Soll das heißen dass du nicht weißt, wie man eine Variable vom Typ vector<int> deklariert? In jedem Fall würde ich dazu raten, die entsprechenden Abschnitte im C++-Buch deiner Wahl durchzulesen 🙂


  • Ich sehe zwar keinen Grund, warum man das tun sollte, aber du kannst dir boost runterladen und einen std::vectorboost::any anlegen. Bei Bedarf kannst du (wahrscheinlich nicht) dir das auch selbst bauen.



  • Jackybroun schrieb:

    jetzt muss ich es halt noch datentyp unabhängig machen

    Erkläre das mal ausführlich, damit man weiß, was Du genau haben willst.



  • An sich ist es nicht sinnvoll, zum Beispiel int und unsigned int (wenn überhaupt) zusammen in einem Array/Container zu speichern. Wie willst du später oder beim Einlesen wissen, welchen Typ der Benutzer wollte, wenn er "5" eingibt?
    Das könnte sowohl int als auch unsigned int sein.
    Wenn du für dieses Problem eine Lösung findest, kannst du natürlich auch einzelne Container/Arrays für jeden Typ anlegen:

    std::vector<int>              int_values;
    std::vector<unsigned int>     uint_values;
    std::vector<std::string>      strings;
    


  • Vielleicht ist die Lösung ja gar nicht so kompliziert und es geht alles mit double statt int, in double kann man ja auch Ganzzahlen speichern. Man sollte dann aber mit leichten Genauigkeitsabweichungen aufpassen.


Anmelden zum Antworten