Vectoren



  • Hallo alle zusammen,

    ich habe folgenden Problem:

    vector<int>v = {0,1,6,8} = {v0,v1,v2,v3}

    ich messe immer folgende abstand:
    vector<int>abstand1 = {[v1-v0],[v2-v1],[v3-v2]}
    vector<int>abstand2 = {[v2-v0],[v3-v1]}
    vector<int>abstand3 = {[v3-v0]}

    das Problem habe ich gelöst aber mit eine sehr lange FKT.
    über 300 Zeile hier einem abschnitt (bei v.size()=4)

    int laenge = hilfs_vector.size();
    switch(laenge)
    {
    case 1:
    abstand1.push_back(v[0]);
    break;
    case 2:
    for(unsigned int i=0 ; i<v.size()-1 ;++i)
    {
     abstand1.push_back(v[i+1]-v[i]);
    }
    break;
    case 3:
    for(unsigned int i=0 ; i<v.size()-1 ;++i)
    {
      abstand1.push_back(v[i+1]-v[i]);
    }
    for(unsigned int i=0 ; i<v.size()-2 ;++i)
    {
      abstand2.push_back(v[i+2]-v[i]);
    }
    break;
    case 4:
    for(unsigned int i=0 ; i<v.size()-1 ;++i)
    {
      abstand1.push_back(v[i+1]-v[i]);
    }
    for(unsigned int i=0 ; i<v.size()-2 ;++i)
    {
      abstand2.push_back(v[i+2]-v[i]);
    }
    for(unsigned int i=0 ; i<v.size()-3 ;++i)
    {
     abstand3.push_back(v[i+3]-v[i]);
    }
    break;
    

    ganz banal gesagt ich bin immer zu fuss gegangen ja nach wie lange der vector ist und das ist gar nicht gut.

    Man kann bestimmt mit 2 For schleife das ganze lösen aber ich komme nicht darauf
    😞

    }



  • ...



  • Eine ganze kurze Erklärung wäre super
    Danke in voraus



  • ...



  • Wenn ich mit dir ganz ehrlich bin nein.



  • Wie rufe ich diese Methode überhaupt auf?
    Wie fühle ich meine Abstände abstände1,abstände2,abstände3?

    ich bin einen Anfänger



  • ...



  • vector<int> v = {0,1,6,8};
    vector<vector<int> > abstand(v.size());
    for (size_t i=0; i<v.size(); ++i)
        inner_product(v.begin(),v.end()-i, v.begin()+i, &abstand[i],
                      [](vector<int>* v,int a){return v->push_back(abs(a)),v;},
                      minus<int>());
    


  • @Swordfish
    bei dieses vector:

    vector<int>v = {0,1,6,8} = {v0,v1,v2,v3}

    ich messe immer folgende abstand:
    vector<int>abstand1 = {[v1-v0],[v2-v1],[v3-v2]}
    vector<int>abstand2 = {[v2-v0],[v3-v1]}
    vector<int>abstand3 = {[v3-v0]}

    und deinem Code:

    void foo( std::vector< int > const & v )
    {
        for( std::vector< int >::size_type i = 0; i < v.size() - 1; ++i ) {
    
            for( std::vector< int >::size_type k = 0; k < v.size() - 1 - i; ++k ) {
    
                std::cout << "v[ " << i + k + 1 << " ] - v[ " << k << " ];\n";
            }
            std::cout.put( '\n' );
        }
    }
    

    wie kann ich die Vektoren fühlen ?
    abstand1, abstand2, abstand3... und wie sieht es aus wenn der Vektor v.size()= n;

    Danke in voraus



  • ...



  • @Swordfish

    ich habe das test Prog bei mir ausprobiert
    Ich bekomme folgende Fehlermeldung:
    error C2143: syntax error : missing ',' before ':'
    error C3531: 'k': a symbol whose type contains 'auto' must have an initializer

    und das ist genau in diesen Zeile:

    for( auto k : result[ i ])
    

    ich habe Visual Studio 2010



  • es hat sich erledigt
    danke 🙂



  • Ich habe mehrere Vektoren v1,v2,v3,v4.....v26
    ich möchte alle vektoren v1-v26 in einem einzigen Vektor reinpacken?
    Wie mache ich das am besten dynamisch ?



  • MaximGast schrieb:

    Ich habe mehrere Vektoren v1,v2,v3,v4.....v26
    ich möchte alle vektoren v1-v26 in einem einzigen Vektor reinpacken?
    Wie mache ich das am besten dynamisch ?

    Sind alle vectors in einem Container, oder sind sie alle Einzelgänger?



  • Allerspätestens jetzt solltest du dich wirklich mal hinsetzen und ein gutes C++ Buch lesen. Falls notwendig vorher kaufen, eine Liste der Buchempfehlungen findest du in der FAQ. Du hangelst dich von einem trivialen Problem zum nächsten, ohne dass da irgendwie Eigeninitiative oder Fortschritt zu erkennen ist. Das ist jetzt wirklich nicht beleidigend oder herablassend, aber das sind Probleme, die man durchaus alleine lösen kann, wenn man sich mal hinsetzt, liest, und nachdenkt.

    PS:
    Das Visual Studio 2010 kann noch kein C++11, daher kann dein Compiler die for-Schleife nicht übersetzen.



  • DocShoe schrieb:

    PS:
    Das Visual Studio 2010 kann noch kein C++11, daher kann dein Compiler die for-Schleife nicht übersetzen.

    Doch, ein bisschen: Und die for_each Schleife kann er. Jedoch mit anderer Syntax (so wie in C# glaube ich)



  • Ich weiss dass ich euch genervt habe aber ich komme einfach nicht weiter

    ich kriege das irgendwie nicht hin so ein Schande....

    @out Sind alle vectors in einem Container, oder sind sie alle Einzelgänger?

    -->Sie sind Einzelgänger.



  • der Anzahl der Vectoren ist mir bekannt da kann ich rausfinden
    aber die lange der Vektor weiss es nicht.
    Es dynamische ablauf deswegen ....
    das heisst jedes Mal muss ermittelt werden wie viel Vektoren habe ich und wie lange jeden Vektor 😞



  • C++ Reference.
    Suchst du vector, guckst du member.



  • MaximGast schrieb:

    das heisst jedes Mal muss ermittelt werden wie viel Vektoren habe ich und wie lange jeden Vektor 😞

    Das verstehe ich nicht. Wenn alle vectors Einzelgänger sind, dann sind es doch immer gleich viele vectors. Das musst du ja hartcodiert haben. Wieso musst du das dann jedes Mal ermitteln? Wenn es hartcodiert ist, sind es doch jedes mal gleich viele?


Anmelden zum Antworten