Vectoren zusammenführen (+= ?)



  • Hi!

    Angenommen ich habe mehrere Vectoren und die möchte ich zusammenführen, ungefähr so:

    for(int i=0; i<MAX; ++i)
        Vector1 += Vector[i];
    

    Inhaltlich soll das dann so aussehen:

    Vector1
    0 | 4
    1 | 1
    2 | 7
    3 | 2
    4 | 0

    +=

    Vector2
    0 | 3
    1 | 6
    2 | 3
    3 | 8
    4 | 1

    =

    Vector3
    0 | 7
    1 | 7
    2 | 10
    3 | 10
    4 | 1

    Gibts da eine vorgefertige Möglichkeit? 😋



  • Ungetestet:

    transform(V1.begin(), V1.end(), V2.begin(), V2.begin(), plus<int>());
    


  • Ponto schrieb:

    Ungetestet:

    transform(V1.begin(), V1.end(), V2.begin(), V2.begin(), plus<int>());
    

    Scheint nicht zu gehen, auch wenn ich beim zweiten V2 aus .begin .end mache. na ja dann muss meine eigene AddVectors() eben herhalten 😞



  • Also bei mir geht's.



  • int main()
    {
    	vector<int> eins;
    	vector<int> zwei;
    
    	for(int i=0; i<20; ++i)
    		eins.push_back(i);
    
    	for(i=0; i<20; ++i)
    		zwei.push_back(i);
    
    	transform(eins.begin(), eins.end(), zwei.begin(), zwei.end(), plus<int>());
    
    	for(i=0; i<20; ++i)
    		cout<<eins[i]<<endl;
    
    	return(0);
    }
    

    Wo ist mein Fehler? Programm stürzt ab weil transform.exe eine Fehlermeldung verursacht



  • transform(eins.begin(), eins.end(), zwei.begin(), zwei.begin(), plus<int>());
    

    Der vierte Parameter ist der Zielvektor (hier wird also der Vektor 'zwei' überschrieben). Deshalb macht dort ein zwei.end() keinen Sinn. 😉



  • Ok danke. leider funktioniert das nur wenn der Zielvector größer oder genau so groß ist wie der vector den man hinzuaddieren möchte.

    da ich das selber abfragen muss mach ich lieber eine eigene funktion draus, ist übersichtlicher und besser lesbar 😋


Anmelden zum Antworten