Vectoren
-
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.
-
vector<int> concatenate_vectors( const vector<vector<int>>& v ) { unsigned size = 0; for( auto it=begin(v); it!=end(v); ++it, concatenate.insert(end(concatenate),begin(*it),end(*it))); vector<int> concatenate; concatenate.reserve( size ); for(auto it=begin(v); it!=end(v); ++it, size+=it->size()); return concatenate; }
in der main Methode:
int main() { std::vector< std::vector< int > > result; vector<int> concatenate = concatenate_vectors( result ); }
sorry...
-
Den Komma-Operator zu verwenden ist nicht cool oder so.
-
@MaximGast: Was meinst?
@Furble Wurble: Meinst du mich? Eigentlich stimme ich dir zu. Ich mag ihn auch nicht wirklich, außer in for-Schleifen. In for-Schleifen finde ich ihn durchaus nuützlich.
-
out schrieb:
@Furble Wurble: Meinst du mich?
Auch. Aber nicht nur.
Der Thread strotzt vor Kommas.
-
...
-
Ich Kriege das nicht zum laufen
Ich weiß es nicht bin zu ......
-
Trotz die Änderung,die du mir vorgeschlagen hast
Concatenate ist ihm nicht bekannt
Ich habe Visual Studio 2010
-
ahhhh
ich habe es jetzt in dem ich :for( std::vector< std::vector< int > >::size_type i= 0; i < result.size(); i++ ) { result[0].insert(result[0].end(),result[i].begin(),result[i].end()); }
und dann
result[0].erase(result[0].begin(),result[0].begin()+size_result0);
Ich bin halt anfänger
-
Hallo alle zusammen,
ich möchte mich bei alle bedanken, die mich bei alle Fragen geantwortet haben und damit habe fertig:-).