2017-07-10 2 views
-3

Ich habe ein Problem mit dem Kopieren von Daten von einem Vektor zu einem anderen. Um meine Frage besser zu verstehen, stelle ich mir vor, ich habe einen VektorA und einen VektorB, denselben Datentyp. Vektor A hat nichts innen und hat 5 Größe.C++ X-Vektordaten in einen anderen Vektor einfügen

Ich möchte die ersten 5 Bytes von VectorB in VectorA setzen, aber ich weiß nicht wie. Basicly, etwa wie folgt:

vectorA.insert(vectorB.begin(),5,vectorB(5)); 

Das nicht funktioniert, aber wie kann ich so etwas tun? Soll ich den Vektor in einem Array drehen? Ich bin wirklich ahnungslos auf was zu tun, da ich neu mit Vektoren arbeiten, so Anny Hilfe/Lösung wäre toll.

Egal, danke!

+1

"Vektor A nichts nach innen hat und hat 5 Größe." Das scheint widersprüchlich zu sein. – juanchopanza

+0

@juanchopanza was ich meine ist, es hat genug Größe, um 5 Bytes zu halten – jeyejow

+0

Das klingt wie * Kapazität *, aber Bytes ist keine gute Metrik, es sei denn, Sie haben einen Vektor von Bytes. – juanchopanza

Antwort

2

Sie können wie so hoch a mit b ‚s Daten füllen:

std::vector<char> a,b; 
// fill up b 
a.insert(a.begin(),b.begin(),b.end()); 

// or if only wanting a certain number of bytes: 
size_t bytes = 5; 
a.insert(a.begin(),b.begin(),b.begin() + 5); 

Seien Sie vorsichtig, um sicherzustellen, dass b genug Daten eingefügt hat, wenn Sie mit der zweiten Methode. Sie können mit einem bedingten überprüfen oder wie so:

a.insert(a.begin(),b.begin(),b.begin() + std::min(b.size(), 5)); 

See std::insert ‚s vierten Prototyp.

+0

Was passiert, wenn VektorB mehr als 5 Bytes hat, und ich nur die ersten 5 will? – jeyejow

+0

@jeyejow siehe bearbeiten – Charles

+1

ich akzeptiere deine awnser in 11 Minuten, aber danke! :) – jeyejow

0

Sie können es einfach mit einem for loop

int size=5; 
for(int i=0;i<size;i++) 
{ 
    vectorA.push_back(vectorB[i]); 
} 
Verwandte Themen