Подскажите, в чем разница между старым добрым vector::push_back() и пришедшим в новом стандарте vector::emplace_back()?
Ответ Проще на примере... struct Item { int a, b, c Item(int a,int b,int c):a(a),b(b),c(c){} } int main(int argc, const char * argv[]) { vector x // x.push_back(1,2,3) <- не скомпилируется! x.emplace_back(1,2,3) } <br>Как видите, push_back'у нужен объект типа элемента (или приводимый). А вот emplace'у просто передаются аргументы, как конструктору. P.S. Понятно, что этим конструктором может быть и копирующий конструктор :) Так что x.emplace_back(Item(0,1,2)) тоже работает.