AWL-Vektorreserve () und Kopie ()

Schöne Grüße,

Ich versuche, eine Kopie von einem Vektor (vec1) zu einem anderen Vektor (vec2) mit den folgenden 2 abgekürzten Codezeilen durchzuführen (vollständige Test-App folgt):

vec2.reserve( vec1.size() );
copy(vec1.begin(), vec1.end(), vec2.begin());

Während der Aufruf von vec2 die Kapazität des Vektors vec2 festlegt, scheint das Kopieren von Daten nach vec2 die Werte von vec1 nach vec2 nicht auszufüllen.

Das Ersetzen der copy () - Funktion durch Aufrufe von push_back () funktioniert wie erwartet.

Was vermisse ich hier?

Danke für Ihre Hilfe. Es folgt das Testprogramm vectest.cpp, gefolgt von der resultierenden Ausgabe.

Compiler: gcc 3.4.4 unter cygwin.

Nat
/**
 * vectest.cpp
 */

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> vec1;
    vector<int> vec2;

    vec1.push_back(1);
    vec1.push_back(2);
    vec1.push_back(3);
    vec1.push_back(4);
    vec1.push_back(5);
    vec1.push_back(6);
    vec1.push_back(7);

    vec2.reserve( vec1.size() );
    copy(vec1.begin(), vec1.end(), vec2.begin());

    cout << "vec1.size()     = " << vec1.size() << endl;
    cout << "vec1.capacity() = " << vec1.capacity() << endl;

    cout << "vec1: ";
    for( vector<int>::const_iterator iter = vec1.begin(); iter < vec1.end(); ++iter ) {
        cout << *iter << " ";
    }
    cout << endl;

    cout << "vec2.size()     = " << vec2.size() << endl;
    cout << "vec2.capacity() = " << vec2.capacity() << endl;
    cout << "vec2: ";
    for( vector<int>::const_iterator iter = vec2.begin(); iter < vec2.end(); ++iter ) {
        cout << *iter << endl;
    }

    cout << endl;
}

Ausgabe:

vec1.size()     = 7
vec1.capacity() = 8
vec1: 1 2 3 4 5 6 7 
vec2.size()     = 0
vec2.capacity() = 7
vec2: 

Antworten auf die Frage(5)

Ihre Antwort auf die Frage