Können wir sowas mit C++ STLs machen? Wenn ja, wie initialisiere ich die Elemente? Ich habe versucht, dies zu tun, aber es funktioniert nicht.C++: Paar <vector<int>, Vektor <int>> p;
pair<vector<int>,vector<int>>p;
p.first[0]=2;
Können wir sowas mit C++ STLs machen? Wenn ja, wie initialisiere ich die Elemente? Ich habe versucht, dies zu tun, aber es funktioniert nicht.C++: Paar <vector<int>, Vektor <int>> p;
pair<vector<int>,vector<int>>p;
p.first[0]=2;
Können wir etwas mit C++ STLs machen?
Ja. Obwohl Sie wahrscheinlich die standard library stattdessen verwenden.
Wenn ja, wie initialisiere ich die Elemente?
Sie initialisieren die Elemente genauso wie Sie die Elemente eines Vektors initialisieren, der nicht in einem Paar ist. List-initialization ist eine nette Option.
Ich habe versucht, dies zu tun, aber es funktioniert nicht.
Sie versuchen, ein Element des Vektors zu ändern, das Sie nie dort setzen. Werfen Sie einen Blick auf die Seite, die beschreibt, was die operator[] tut. Es besagt nicht, dass es dem Vektor Elemente hinzufügt. Es gibt jedoch other functions das tun.
Standardmässig werden die Vektoren keine Größe haben, so sollten Sie entweder push_back
einige Elemente oder resize
sie zuerst. Ein Weg, um Ihre p zu initialisieren wäre:
pair<vector<int>, vector<int>> p = {{1,2,3}, {4,5,6}};
p.first
und p.second
(mit Typ std::vector<int>
) initialisiert werden, aber sie sind immer noch leer ist, gibt es keine Elemente in ihnen. Dann wird p.first[0] = 2;
zu UB führen.
Vielleicht möchten
p.first.push_back(2);
Ja, es funktioniert, aber Sie haben Speicher zu den std::vector
s zuweisen, bevor Sie ihre Elemente zuzugreifen:
//p now can hold 1 element
p.first.resize(1);
Alternativ können Sie push_back
verwenden:
//p now has 1 element with value 2
p.first.push_back(2).
Wenn etwas nicht funktioniert, beachte ** wie ** es nicht funktioniert. Kompiliert es? Gibt es falsche Ergebnisse? Welche Ergebnisse haben Sie erwartet? – user2079303
Nur durch Neugier, was versuchst du zu tun? – Garf365
Kombiniere keine Dinge, die du nicht selbstständig benutzen kannst. Woher kommen die Upvotes? – LogicStuff