Vecteur STL (réserve) et de copier()

Salutations,

Je suis en train d'effectuer une copie à partir d'un vecteur (vec1) à un autre vecteur (vec2) en utilisant les 2 suivants abrégé de lignes de code (de la pleine application de test qui suit):

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

Tandis que l'appel à vec2 définit la capacité du vecteur vec2, la copie de données vers vec2 semble pas remplir les valeurs de vec1 à vec2.

Remplacement de la copie() fonction avec des appels à push_back() fonctionne comme prévu.

Ce qui me manque ici?

Merci pour votre aide. vectest.cpp programme de test suivie par la sortie qui suit.

Compilateur: gcc 3.4.4 sur 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;
}

de sortie:

vec1.size()     = 7
vec1.capacity() = 8
vec1: 1 2 3 4 5 6 7 
vec2.size()     = 0
vec2.capacity() = 7
vec2: 
InformationsquelleAutor natersoz | 2009-07-14