Es gibt mehrere Möglichkeiten, Ihr Ziel zu erreichen.
std :: vector :: insert
Der Vektor kann durch Einfügen von neuen Elementen vor dem Element an der angegebenen Position ausgefahren werden, effektiv die Behältergröße durch die Anzahl der Elemente eingefügt zu erhöhen. Sie können einem der folgenden Ansätze folgen. Die zweite Version verwendet C++ 11 und kann als eine allgemeinere Antwort betrachtet werden, da b auch ein Array sein könnte.
a.insert(a.end(), b.begin(), b.end());
a.insert(std::end(a), std::begin(b), std::end(b));
Manchmal ist es in der Praxis eine bewährte Methode, die Reservefunktion vor der Verwendung von std :: vector :: insert zu verwenden. Std :: vector :: reserve Funktion erhöht die Kapazität des Containers auf einen Wert, der größer oder gleich new_cap ist. Wenn new_cap größer als die aktuelle Kapazität() ist, wird neuer Speicher zugewiesen, andernfalls führt die Methode nichts aus.
a.reserve(a.size() + distance(b.begin(), b.end()));
Die Verwendung der Reservefunktion ist nicht erforderlich, kann aber ratsam sein. Und es ist am besten, Reserve zu verwenden, wenn Sie wiederholt in einen Vektor einfügen, für den Sie die endgültige Größe kennen, und diese Größe ist groß. Andernfalls ist es besser, wenn die STL Ihren Vektor nach Bedarf wachsen lässt.
std ::
std :: copy ist die zweite Option, die Sie um Ihr Ziel zu erreichen, berücksichtigen können. Diese Funktion kopiert die Elemente im Bereich (first, last) in den Bereich ab result.
std::copy (b.begin(), b.end(), std::back_inserter(a));
jedoch die Verwendung von std :: Kopie ist langsamer als die Verwendung von std :: vector :: insert(), weil std :: copy() nicht genügend Platz reservieren kann, bevor Hand (es nicht tut haben Zugriff auf den Vektor selbst, nur auf einen Iterator, der hat, während std :: vector :: insert(), eine Member-Funktion, kann. Dadurch ist std :: copy in der Tat langsamer als std :: vector :: insert. Die meisten Leute verwenden std :: copy, ohne dieses Szenario zu kennen.
boost :: push_back
Die dritte Option, die Sie betrachten können, ist der Einsatz von der Boost-push_back Funktion.
boost::push_back(a, b);
Mögliche Duplikat [verketten zwei std :: Vektoren] (http://stackoverflow.com/questions/201718/concatenating-two-stdvectors) –