Vektoren unterschiedlicher Datentypen "synchron" befüllen



  • Hallo zusammen,

    ich benötige Hilfe bei folgender Aufgabenstellung:

    Es sollen zwei Vektoren (Datentyp int + string) synchron gefüllt werden, d.h. in den Vektoren stehen die zusammengehörenden Informationen an gleicher Stelle.
    Als Beispiel wollte ich probieren 1 und A, 2 und B usw. zusammen auszugeben. Leider zeigt der Compiler einen Fehler bei:

    string_vektor.push_back(zeichenkette[i]);
    

    an.
    Fehlermeldung "invalid conversion from `char' to `const char*' "

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    int main ()
    {
        vector <int> int_vektor;
        vector <string> string_vektor;
        string zeichenkette = "ABCDEFGH";
        const int max_array=8;
        int array_int[max_array] = {1,2,3,4,5,6,7,8};
    
    for (int i=0; i < max_array; i++)
        {
        int_vektor.push_back(array_int[i]);
        string_vektor.push_back(zeichenkette[i]);
        cout << int_vektor[i] << string_vektor[i];
        system("Pause");
        }
    
    }
    

    Weiss jemand Rat (für euch bestimmt nur ne Kleinigkeit)?

    Danke & Gruß



  • Die Fehlermeldung sagt dir ja eigentlich bereits, was das Problem ist.

    Überleg dir mal sehr genau, was string_vektor für einen Typen erwartet und was für einen Typen du da übergeben willst.

    Kleiner Tipp: Es sind nicht die gleichen. 😉



  • Hallo drakon,

    danke für deine Antwort.
    string_vektor erwartet den Datentyp String, ich versuche ihm aber ein Char zu übergeben?!
    Muss ich den String erst zerlegen oder wie funktioniert die Befüllung des Vektors sonst?

    Danke & Gruß



  • -Kenny- schrieb:

    string_vektor erwartet den Datentyp String, ich versuche ihm aber ein Char zu übergeben?!

    Genau.

    Muss ich den String erst zerlegen oder wie funktioniert die Befüllung des Vektors sonst?

    Entweder du machst aus dem Buchstaben einen string oder du änderst den Typen des vector dahingehend, dass er char 's empfangen kann.



  • Zwei verschiedene Container synchron zu halten kann mühsam und teuer sein. Oft will man das gar nicht. Lieber objektorientiert denken.

    struct Data // passenden Namen wählen
    {
        char letter;
        int  number;
    
        Data(char letter, int number)
        : letter(letter)
        , number(number)
        {
        }
    };
    
    int main()
    {
        std::vector<Data> vec;
    }
    

Anmelden zum Antworten