Retourner au contenu associé (dépêche : C++ se court-circuite le constructeur de copie)
Posté par David Marec le 15 décembre 2016 à 16:44. 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.
emplace
pourquoi il appelle le destructeur
C'est le vector qui faire des copies lorsqu'il va devoir grossir; donc, tout reconstruire ailleurs.
vector
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.
reserve
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: questions sur les constructeurs et les vecteurs
Posté par David Marec . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.
emplaceajoute l'élément qu'il va construire à la volée avec les arguments donnés.C'est le
vectorqui faire des copies lorsqu'il va devoir grossir; donc, tout reconstruire ailleurs.ex:
Diminuer le
reserve( voire l'enlever) fait tout planter.