Vektoren



  • template<typename T>
    void resize2DimVector(vector< vector<T> > &vec, size_t firstDim, size_t secDim)
    {
        vec.resize(firstDim);
        for(size_t i=0; i<firstDim; ++i)
            vec[i].resize(secDim);
    }
    
    template<typename T>
    const vector< vector<T> > make_2DimVector(size_t firstDim, size_t secDim)
    {
        vector< vector<T> > vec;
        resize2DimVector(vec, firstDim, secDim);
        return vec;
    }
    

    Dieses Codestücke (für einen 2-dim. Vektor) habe ich aus den FAQ. Wie müsste es aussehen, wenn man einen n-dimensionalen Vektor auf dieser Basis allgemein erstellen wollte, etwa so:

    makeVector(name, <typ>, dimension, groesse_x, groesse_y);
    resizeDimVector(name, groesse_x, groesse_y);
    

    Konkret für 3 Dimensionen mit dem Typen float:

    makeVector(myVector, <float>, 12, 22, 40);
    resizeDimVector(myVector, 20, 40, 33);
    

    Ich habe es leider nicht geschafft.



  • Nun, dreidimensional wäre dann vector<vector<vector<int> > >

    resize wäre zB. so

    vec.resize(firstDim);
        for(size_t i=0; i<firstDim; ++i) {
          vec[i].resize(secDim);
          for(size_t j=0; i<secDim; ++j)
             vec[i][j].resize(thirdDim);
        }
    

    [ Dieser Beitrag wurde am 19.03.2003 um 20:18 Uhr von DrGreenthumb editiert. ]



  • n-dimensional könnte es mit nem baum funktionieren, wobei die anzahl der "kinder" eines knotens seiner dimension entspricht. die dimension der knoten eines levels ist dann jeweils anzupassen. viel spass damit 🙂



  • wenn du an n-vector denkst dan würde ich mich von der stl lösen und z.b. zu boost mal rüberschielen
    es ist cool das stl so flexiebel ist und so was ermöglicht, aber es ist doch etwas aufwändig (laufzeit und programmier aufwand)


Anmelden zum Antworten