• [^] # Re: questions sur les constructeurs et les vecteurs

    Posté par . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.

    En gros mes questions :
    - Comment fonction emplace_back,

    emplace ajoute l'élément qu'il va construire à la volée avec les arguments donnés.

    pourquoi il appelle le destructeur

    C'est le vector qui faire des copies lorsqu'il va devoir grossir; donc, tout reconstruire ailleurs.

    ex:

    #include <iostream>
    #include <vector>
    #include <string>
    class test
    {
     public:
     test(size_t indice):_id(indice) {
     _nr=new int[5];
     std::cout << _id << " initialized." << std::endl;
     }
     ~test() {
     delete[] _nr;
     std::cout << _id << " removed." << std::endl;
     }
     private:
     int* _nr;
     size_t _id;
    };
    int main() {
     std::vector<test> v;
     v.reserve(10);
     for(size_t i(0);i<10;++i)
     {
     v.emplace_back (i);
     }
     return 0;
    }

    Diminuer le reserve ( voire l'enlever) fait tout planter.