Vectoren



  • ...



  • @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?



  • Und wenn das hartcodiert ist, ist das natürlich ziemlich doof. Dann musst du das wohl so machen:

    #include <numeric>
    #include <vector>
    using namespace std;
    
    int main()
    {
    	vector<int> v1(10);
    	iota( begin(v1), end(v1), 10);
    	vector<int> v2(10);
    	iota( begin(v2), end(v2), 20);
    	vector<int> v3(10);
    	iota( begin(v3), end(v3), 30);
    	vector<int> v4(10);
    	iota( begin(v4), end(v4), 40);
    	vector<int> v5(10);
    	iota( begin(v5), end(v5), 50);
    
        // Hier gehts für dich los:
    	unsigned size = v1.size() + v2.size() + v3.size() + v4.size() + v5.size();
    	vector<int> all;
    	all.reserve( size );
    	all.insert( end(all), begin(v1), end(v1) );
    	all.insert( end(all), begin(v2), end(v2) );
    	all.insert( end(all), begin(v3), end(v3) );
    	all.insert( end(all), begin(v4), end(v4) );
    	all.insert( end(all), begin(v5), end(v5) );
    }
    


  • Der Anzahl der Vektoren ergibt sich nach einen bestimmten Messvorgang.
    zb Mess1:--> v1,v2,v3,v4
    Mess 2:--> v5,v6,v7,v8
    ....

    Meine Vorhaben ist:
    Wenn ich bei Mess1 bin wollte ich alle Vektoren in einen einzigen vektor haben, damit ich noch eine andere Filter einsetzen kann.



  • Zeig mir mal deinen aktuelle Quellcode, wo du deine vectoren erstellst usw.



  • Die Vektoren werden erstmal hier erstellt:

    template< typename T >
    vector< vector< T > > foo(vector< T > const & input )
    {
        typedef vector< T >::size_type size_type;
    
        size_type const size = input.size() - 1;
        vector< vector< T > > result( size );
        vector< T > current( size );
    
        for( size_type i = 0; i < size; result[ i ] = current, current.resize( size - ++i ) )
            for( size_type k = 0; k < size - i; ++k )
                current[ k ] = input[ i + k + 1 ] - input[ k ];
    
        return result;
    }
    

    dann rufe ich diese Methode in main() Fkt:

    std::vector< std::vector< int > > result = foo( hilfs_vector );
    for( std::vector< std::vector< int > >::size_type i= 0; i < result.size(); ++i ){
    
            std::cout << "Delta " << i << ": ";
    		ausgabe(result[i]);
            std::cout.put( '\n' );
        }
    

    --> Der Anzahl der Vektoren ist gleich der Anzahl von i bzw Delta.
    Meine ausgabe() sieht so aus:

    void ausgabe(vector<int>&v)
    {
    	vector<int>::iterator iNext = v.begin();
    	vector<int>::iterator iEnd = v.end();
    	while(iNext < iEnd)
    	{
    		cout << " " <<*iNext++ << " ";
    	}
    	cout << endl;
    }
    


  • Also doch keine Einzelgänger, wenn sie alle in einem Container liegen...

    Also du willst das hier?

    vector<int> concatenate_vectors( const vector<vector<int>>& v )
    {
    	unsigned size = 0;
    	for( auto it=begin(v); it!=end(v); ++it, size+=it->size() );
    
    	vector<int> concatenate;
    	concatenate.reserve( size );
    	for( auto it=begin(v); it!=end(v); ++it, concatenate.insert(end(concatenate),begin(*it),end(*it)) );
    	return concatenate;
    }
    
    int main()
    {
    	// ...
    	vector<int> concatenate = concatenate_vectors( result );
    }
    


  • Huch, die beiden Teile musst du noch vertauschen.

    for( auto it=begin(v); it!=end(v); size+=it->size(), ++it );
    


  • Ach genau so was brauche ich 😃 .
    Es ist echt schwierig geschrieben vor allem wenn man Anfänger ist aber trotzdem nicht schlecht.
    Danke



  • @out welche beide Teile?



  • MaximGast schrieb:

    @out welche beide Teile?

    Die beiden hinteren Teile der for-Schleife. Schau sie dir in meinem ersten Post an, dann in meinerm Korrekturpost.


Anmelden zum Antworten