Keresés

Új hozzászólás Aktív témák

  • EQMontoya

    veterán

    válasz dobragab #3518 üzenetére

    Egy szempontot kihagytál, már ha nem csak vektorról van szó.
    Mégpedig azt az esetet, amikor az emplace lehet sikertelen: pl. setbe beszúrás. Ott jelentős különbségek vannak.

    Egyébként a move ctor témája érdekes, de ezzel sok probléma van. Ugye a legfőbb ok a nem generálódásra a user-defined copy ctr, ami elég gyakori. És amikor egy régi kódot átvisznek c++11-re, ott a pék se fogja utólag megkeresni és megírogatni..

    A push_back vs. emplace_back témakörre: szerintem alapvetően másra szánták, és itt a jogászokhoz hasonlóan úgy gondolkodom, hogy nem csak az a lényeg, hogy pontosan hogyan működik betűről betűre, hanem hogy mire szánták. Márpedig ez itt szerintem jól jelzi a különbséget: push_back, ha már létezőt akarsz belerakni, emplace pedig ha benne akarsz konstruálni.
    Ezzel pedig nagy bakot sem lehet lőni.

    A unique_ptr-es példára reflektálva: persze, ott nem az emplace_back a hibás alapvetően, de a unique_ptr<T> (T *p) egy explicit ctor! Tehát az emplace_back itt csúnyán elfedi, hogy Te épp hatalmas hülyeséget készülsz csinálni. Olyat, ami amúgy le sem fordulna.

Új hozzászólás Aktív témák