Vectoren in array ablegen?
-
Hallo,
ich habe Vektoren unterschiedlicher Länge und würde diese gerne in ein Array ablegen, damit ich auf jedes Element eines bestimmten Vektors zugreifen kann.
z.b. vector 5 element 2
Wie gehe ich vor?
Über ein 2D-Array kann ich es nicht machen, da ich dort eine fixe Größe angeben muss, richtig?
Deswegen vermute ich, dass ich es über Vektoren realisieren muss.
-
du kannst vectoren auch in vectoren ablegen: std::vector<std::vector<int>>, allerdings ist so nicht gewährleistet, dass die inneren vectoren alle gleich groß sind.
-
Danke für deine Antwort.
Und Vektoren kann man aber nicht nicht Arrays ablegen?
Weil meine Anzahl der Vektoren ist fix nur die Länge der einzelnen Vektoren ist unterschiedlich.
-
du könntest ein std::array nehmen:
std::array<std::vector<int>, VECTOR_COUNT>
-
NaHibi schrieb:
Und Vektoren kann man aber nicht nicht Arrays ablegen?
Klar kann man das, warum machst du es nicht einfach?
std::vector<int> v[10];
-
Danke, so werde ich es machen.
Kann man mehrere Werte auch in einer Zeile hinzufügen, oder muss ich das für jeden Wert einzlen machen?
v[0].push_back(10);
v[0].push_back(20);
-
Klar kannst du mehrere Elemente auf einmal in den Vector schieben. Die insert-Methode hat ja eine Überladung, die ein Iterator-Range-Paar erwartet. Ref
-
vector<int> testv;
testv.insert (testv.begin(), 2, 10 );Wie ich das verstehe, kann ich nur mehrere Elemente mit dem gleichen Wert hinzufügen.
Kann ich auch beliebige Werte hinzufügen?
z.B. 10 20 23Wenn ja, wie?
-
std::array<std::vector<float>, 10> arr; for(auto & vec : arr) { float insertions[] = { 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f }; vec.insert(std::end(vec), std::begin(insertions), std::end(insertions)); // per Iterator Range Pair vec.insert(std::end(vec), { 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f }); // per Initializer_list }(Frage an die anderen: Ist die Syntax mit der lnitializer_list so richtig?)
-
Skym0sh0 schrieb:
Frage an die anderen: Ist die Syntax mit der lnitializer_list so richtig?
Ja. Den Zuweisungsoperator kannst noch weglassen.
Oder, aus der Kategorie "noch mehr Spaß mit Klammern":
#include <array> #include <vector> #include <iostream> int main() { std::array< std::vector< int >, 4 > arr {{ { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 } }}; for( auto & vec : arr ) { for( auto & i : vec ) std::cout << i << ' '; std::cout.put( '\n' ); } }